Skip to content

External task definitions

Study the contents of the file separate-task-config.yml.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
---
resources:
  - name: concourse-examples
    type: git
    icon: github
    source:
      uri: https://github.com/concourse/examples

jobs:
  - name: job
    plan:
      - get: concourse-examples
      - task: simple-task
        file: concourse-examples/tasks/hello-world.yml

Note:

  1. This is the first time we see a resources section in a pipeline.
  2. The task definition is missing.

    The task declaration references a file from a subdirectory named concourse-examples

    Interestingly, the name of the resource matches that directory.

The get step in the job causes a copy of the repository to be placed inside the container where the task is run, in a subdirectory by the same name as the resource.

Inspect the contents of the repository and verify that there indeed exists a file named hello-world.yml under a subdirectory named tasks.

Note

The pipeline yaml file does not stand alone. Its complete definition depends on the task yaml file from the repository. This is not an uncommon arrangement.

Most Concourse pipelines separate out their tasks in a similar fashion. Furthermore, both pipeline and task artifacts are often checked in to a repository corresponding to the codebase that these pipelines are associated with.

Tasks

  • Set the pipeline and unpause it
  • View the pipeline in the Concourse dashboard

Note how this pipeline renders differently.

The concourse-examples resource renders to the left of the job itself, with a dashed line connecting the two entities to indicate that the job is dependent on the resource.

Trigger the job, and verify that the build output emits the Hello, world! message.