Adding projects to a devfile

This section describes how to add one or more projects to a devfile.

Procedure
  1. Add a projects section in the devfile, containing a list of one or more projects.

    Example 1. A minimal devfile with one single project
    schemaVersion: 2.0.0
    metadata:
      name: petclinic-dev-environment
      version: 2.0.0
    projects:
      - name: petclinic
        git:
          remotes:
            origin: "https://github.com/spring-projects/spring-petclinic.git"
          checkoutFrom:
            revision: master
    Example 2. A devfile with multiple projects
    schemaVersion: 2.0.0
    metadata:
      name: example-devfile
      version: 2.0.0
    projects:
    - name: frontend
      git:
        remotes:
          origin: "https://github.com/acmecorp/frontend.git"
    - name: backend
      git:
        remotes:
          origin: "https://github.com/acmecorp/backend.git"
  2. For each project, define an unique value for the mandatory name attribute.

  3. For each project, define a mandatory source of either the git or zip type.

    git

    Projects with sources in Git. checkoutFrom refers to the branch being used.

    Example 3. Project-source type: git
    projects:
      - name: my-project1
        git:
          remotes:
            origin: "https://github.com/my-org/project1.git"
          checkoutFrom:
            revision: master           (1)
    zip

    Projects with sources in a ZIP archive. location refers to the URL of a ZIP file.

    Example 4. Project-source type: zip
    source:
        zip:
          location: http://host.net/path/project-src.zip
  4. For each project, define the optional clonePath attribute to specify the path into which the project is to be cloned. The path must be relative to the /projects/ directory, and it cannot leave the /projects/ directory. The default value is the project name.

    Example 5. Defining the clonePath attribute
    schemaVersion: 2.0.0
    metadata:
      name: my-project-dev
      version: 2.0.0
    projects:
      - name: my-project-resource
        clonePath: resources/my-project
        zip:
        location: http://host.net/path/project-res.zip
      - name: my-project2
          git:
            remotes:
              origin: "https://github.com/my-org/project2.git"
            checkoutFrom:
              revision: develop
  5. For each project, define the optional sparseCheckoutDir attribute to populate the project sparsely with selected directories.

    • Set to /my-module/ to create only the root my-module directory (and its content).

    • Omit the leading slash (my-module/) to create all my-module directories that exist in the project. Including, for example, /addons/my-module/.

      The trailing slash indicates that only directories with the given name (including their content) are created.

    • Use wildcards to specify more than one directory name. For example, setting module-* checks out all directories of the given project that start with module-.

    For more information, see Sparse checkout in Git documentation.

Additional resources