Che Server is the backend component of Eclipse Che - a Kubernetes-native IDE platform that provides REST APIs for managing Kubernetes namespaces and retrieving devfile content from various Git hosting services.
Eclipse Che Server is a Java web application deployed on Apache Tomcat that enables:
- Kubernetes Namespace Management: Provision and manage workspaces across Kubernetes/OpenShift clusters
- Multi-SCM Support: Integrate with GitHub, GitLab, Bitbucket, and Azure DevOps repositories
- OAuth Authentication: Secure OAuth1/OAuth2 flows for all supported Git providers
- Devfile Resolution: Fetch and parse devfile content from various repository sources
- Factory Flow: Convert repository URLs into ready-to-use development workspaces
- Java 17 with Jakarta EE
- Apache Maven for build automation
- Google Guice for dependency injection
- Fabric8 Kubernetes Client for cluster orchestration
- Apache Tomcat as the servlet container
- Micrometer/Prometheus for metrics
- OpenTracing/Jaeger for distributed tracing
- Installation & Setup
- Building the Project
- Project Structure
- Usage & API Examples
- Contributing
- CI/CD
- Resources
- License
- Java 17
- Apache Maven 3.6+
- Podman or Docker (for container builds and integration tests)
- Kubernetes or OpenShift cluster (for deployment)
-
Clone the repository
git clone https://github.com/eclipse-che/che-server.git cd che-server -
Build the project
mvn clean install
-
Build container image
./build/build.sh --organization:quay.io/<your quay account>
This creates the image:
quay.io/<your quay account>/che-server:next -
Deploy to Kubernetes/OpenShift
# Install chectl (Che CLI) if not already installed # See: https://github.com/che-incubator/chectl chectl server:deploy --platform=minikube --cheimage=quay.io/<your quay account>/che-server:next
mvn clean installmvn clean install -V -e -Pfast -DskipTests -Dskip-validate-sources -Denforcer.skip=truecd wsmaster/che-core-api-factory-github
mvn clean install./build/build.shChe Server is organized into five main Maven modules:
Core APIs, DTOs, REST framework, WebSocket support, and common utilities.
che-core-api-core: REST framework and core APIsche-core-api-dto: DTO serialization frameworkche-core-api-model: Shared data modelscommons/: JSON, logging, dependency injection utilitiesche-core-metrics-core: Micrometer/Prometheus metricsche-core-tracing-*: OpenTracing/Jaeger distributed tracing
REST API implementations organized by feature domain.
che-core-api-auth: Base OAuth frameworkche-core-api-auth-github: GitHub OAuth implementationche-core-api-auth-gitlab: GitLab OAuth implementationche-core-api-auth-bitbucket: Bitbucket OAuth implementationche-core-api-auth-azure-devops: Azure DevOps OAuth implementation
che-core-api-factory-shared: Common factory interfacesche-core-api-factory-github: GitHub factory resolverche-core-api-factory-gitlab: GitLab factory resolverche-core-api-factory-bitbucket: Bitbucket Cloud factory resolverche-core-api-factory-bitbucket-server: Bitbucket Server factory resolverche-core-api-factory-azure-devops: Azure DevOps factory resolver
che-core-api-devfile: Devfile parsing and validationche-core-api-workspace: Workspace lifecycle managementche-core-api-user: User management APIsche-core-api-ssh: SSH key managementche-core-sql-schema: Database schema definitions
kubernetes/: Base Kubernetes infrastructure (Fabric8 client)openshift/: OpenShift-specific extensionsinfrastructure-factory: Infrastructure abstraction layerinfrastructure-metrics: Infrastructure-specific metrics
Permission and authentication modules for multi-user deployments.
Assembles all modules into deployable WAR files.
Once deployed, Che Server exposes REST APIs for workspace and factory management:
curl -X GET http://<che-host>/api/usercurl -X POST http://<che-host>/api/factory/resolver \
-H "Content-Type: application/json" \
-d '{"url": "https://github.com/eclipse-che/che-server"}'curl -X GET http://<che-host>/api/kubernetes/namespaceChe Server handles OAuth authentication for SCM providers:
- User initiates OAuth:
GET /api/oauth/authenticate?oauth_provider=github&redirect_after_login=<url> - User authorizes on provider's site
- Callback:
GET /api/oauth/callback?code=<auth_code>&state=<state> - Token stored for API operations
We welcome contributions to Eclipse Che Server! Whether you're fixing bugs, adding features, or improving documentation, your help is appreciated.
To get started:
- Read our CONTRIBUTING.md guide for detailed instructions on:
- Setting up your development environment
- Building and testing the project
- Debugging techniques
- Code style and conventions
- How to add support for new SCM providers
- Submitting pull requests
Quick Links:
- Report Issues: https://github.com/eclipse/che/issues
- Community: See the Eclipse Che Documentation for chat, mailing lists, and community meetings
GitHub Actions workflows handle automated builds and releases:
- PR Builds: Validates pull requests (
.github/workflows/build-pr-check.yml) - Main Branch Builds: Builds and pushes to quay.io (
.github/workflows/next-build.yml) - Releases: Handles version releases (
.github/workflows/release.yml) - Sonar Analysis: Code quality checks (
.github/workflows/sonar.yaml)
For detailed information about CI/CD workflows, see CONTRIBUTING.md.
- Documentation: https://www.eclipse.org/che/docs/
- Issues & Bug Reports: https://github.com/eclipse/che/issues
- Eclipse Che Main Repository: https://github.com/eclipse/che
- Container Images: https://quay.io/repository/eclipse/che-server
To enhance supply chain security and offer users clear insight into project components, Eclipse Che generates a Software Bill of Materials (SBOM) for every release. These are published to the Eclipse Foundation SBOM registry, with access instructions and usage details available in this documentation.
Eclipse Che - Cloud-native, in-browser IDE for rapid cloud application development.