Skip to content

Latest commit

 

History

History
82 lines (64 loc) · 6.52 KB

CONTRIBUTING.md

File metadata and controls

82 lines (64 loc) · 6.52 KB

Developing with Eclipse Che

This project contains a devfile v2 located in the project's root directory. With this devfile you can perform the following tasks:

  • Build project sources with maven.
  • Build a container image.
  • Push your changes to GitHub.

Starting a Workspace within Eclipse Che

To start a new workspace within Eclipse Che, navigate to the following URL:

{CHE-HOST}/#https://github.com/eclipse-che/che-server

Running Devfile Tasks for Downloading Dependencies and Building the Project

For VS Code, execute tasks defined in the devfile with these steps:

  1. Open the command palette (Ctrl/Cmd + Shift + P).
  2. Execute the Tasks: Run Task command.
  3. Select the devfile folder and select the 1. Build sources task to build the project sources with maven.
  4. Follow steps 1 and 2 again, select the 1. Build image task to build a container image.
  5. In the workspace terminal, tag the che-server image with your account: podman tag quay.io/eclipse/che-server:next <docker registry>/<your account>/che-server:next.
  6. Push the che-server image to your account: podman push <docker registry>/<your account>/che-server:next.

Local build requirements

  • Apache Maven 3.9 or later
  • JDK 11
  • Podman or Docker (required for running integration tests) A Che workspace environment allows to build the image internally, using the workspace terminal.

Start and debug

  1. Deploy Che to a Red Hat OpenShift or Minikube cluster by using a previously built image: chectl server:start --platform=<openshift / minikube> --cheimage=<docker registry>/<your account>/che-server:next.
  2. Enable local debugging of the Eclipse Che server: chectl server:debug.
  3. In your IDE, create a new Remote JVM Debug configuration on localhost:8000.
  4. Hit a breakpoint in the code and activate the debug configuration.

Contributing an SCM provider

An SCM provider support has to be provided by adding new maven modules to the wsmaster directory.

Implementing che-core-api-oauth- module

This module is responsible for Oauth requests to the SCM provider and contans next implementations:

  1. <SCM provider name>OAuthAuthenticator contains specific implementation of Oauth token requestand authentication endpoint.
  2. <SCM provider name>OAuthAuthenticatorProvider a provider of the OAuthAuthenticator.

Implementing coresponding che-core-api-factory- module

This module is responsible for API operations of the specific SCM provider.

  1. <SCM provider name>ApiClient contains all necessary HTTP API calls like getUser().
  2. <SCM provider name>AuthorisingFileContentProvider overrides the common AuthorisingFileContentProvider to define the specific isPublicRepository() function.
  3. <SCM provider name>FactoryParameterResolver validates SCM URL if it corresponds to the SCM provider. Also Provides specific Factory Parameters resolver for the SCM repository.
  4. <SCM provider name>PersonalAccessTokenFetcher fetches Personal Access Token from the SCM provider by reqesting the OAuth API of the provider. Validates the token by comparing the token access scopes with the predefined scope list.
  5. <SCM provider name>FileResolver Implementation of a resolver that can return particular file content from specified SCM repository.
  6. <SCM provider name>URLParser Parses the string representation of the URL to an SCM specific object
  7. <SCM provider name>UserDataFetcher Implementation of a resolver that can return particular file content from specified SCM repository.

CI

There are several GitHub Actions workflows implemented for this repository:

  • build-next
    Builds Maven artifacts, builds container images and pushes them to quay.io on each commit to main branch.
  • Release Che Server
    Builds Maven artifacts and container images. Images are public and pushed to quay.io. See RELEASE.md for more information about this workflow.
  • Release Changelog
    Creates a GitHub release which will include a generated changelog.
  • Update Che docs variables
    Runs on each commit to main branch.
  • build-pr-check
    Builds Maven artifacts and container images. This workflow is used as a check for all pull requests that are submitted to this project.
  • Sonar
    Runs Sonar against the main branch. The result can be seen here.
  • Try in Web IDE
    Used as a check for pull requests that are submitted to this project.

Downstream builds can be found at the link below, which is internal to Red Hat. Stable builds can be found by replacing the 3.x with a specific version like 3.2.

Report issues

Issues are tracked on the main Eclipse Che Repository: https://github.com/eclipse/che/issues