A devfile is a file that describes and define a development environment:
-
the source code
-
the development components (browser IDE tools and application runtimes)
-
a list of pre-defined commands
-
projects to clone
Devfiles are YAML files that Che consumes and transforms into a cloud workspace composed of multiple containers. The devfile can be saved in the root folder of a Git repository, a feature branch of a Git repository, a publicly accessible destination, or as a separate, locally stored artifact.
When creating a workspace, Che uses that definition to initiate everything and run all the containers for the required tools and application runtimes. Che also mounts file-system volumes to make source code available to the workspace.
Devfiles can be versioned with the project source code. When there is a need for a workspace to fix an old maintenance branch, the project devfile provides a definition of the workspace with the tools and the exact dependencies to start working on the old branch. Use it to instantiate workspaces on demand.
Che maintains the devfile up-to-date with the tools used in the workspace:
-
Projects of the workspace (path, Git location, branch)
-
Commands to perform daily tasks (build, run, test, debug)
-
Runtime environment (container images to run the application)
-
Che-Theia plug-ins with tools, IDE features, and helpers that a developer would use in the workspace (Git, Java support, Sonarlint, Pull Request)