This section describes how to create a minimal devfile for your project and how to include more than one projects in a devfile.
Preparing a minimal devfile
A minimal devfile sufficient to run a workspace consists of the following parts:
-
Specification version
-
Name
apiVersion: 1.0.0
metadata:
name: minimal-workspace
Without any further configuration, a workspace with the default editor is launched along with its default plug-ins, which are configured on the Che Server. Che-Theia is configured as the default editor along with the Che Machine Exec plug-in.
Add the following parts for a more functional workspace:
-
List of components: Development components and user runtimes
-
List of projects: Source code repositories
-
List of commands: Actions to manage the workspace components, such as running the development tools, starting the runtime environments, and others
apiVersion: 1.0.0
metadata:
name: petclinic-dev-environment
projects:
- name: petclinic
source:
type: git
location: 'https://github.com/spring-projects/spring-petclinic.git'
components:
- type: chePlugin
id: redhat/java/latest
Specifying multiple projects in a devfile
A single devfile can specify multiple projects. For each project, specify the type of the source repository, its location, and optionally also the directory to which the project should be cloned to.
apiVersion: 1.0.0
metadata:
name: example-devfile
projects:
- name: frontend
source:
type: git
location: https://github.com/acmecorp/frontend.git
- name: backend
clonePath: src/github.com/acmecorp/backend
source:
type: git
location: https://github.com/acmecorp/backend.git
In the preceding example, there are two projects defined, frontend and backend. Each project is located in its own repository. The backend project has a specific requirement to be cloned into the src/github.com/acmecorp/backend/ directory under the source root (implicitly defined by the Che runtime) while the frontend project will be cloned into the frontend/ directory under the source root.
For a detailed explanation of all devfile component assignments and possible values, see:
These sample devfiles are a good source of inspiration: