1.11.6 in_parallel
step
Performs the given steps in parallel. If any sub-steps in a parallel
result in a failure or error, the parallel step as a whole is considered to have failed or errored. Expand each section below for more details and examples.
Steps are either configured as a array or within an in_parallel_config
schema.
Using the in_parallel
step where possible is the easiest way to speeding up a builds.
It is often used to fetch all dependent resources together at the start of a build plan:
jobs:
- name: get-in-parallel
plan:
- in_parallel:
- get: ci
- get: repo
- get: code
resources:
- name: repo
type: mock
- name: code
type: mock
- name: ci
type: mock
If any step in the in_parallel
fails, the build will fail, making it useful for build matrices:
plan:
- get: some-repo
- in_parallel:
- task: unit-windows
file: some-repo/ci/windows.yml
- task: unit-linux
file: some-repo/ci/linux.yml
- task: unit-darwin
file: some-repo/ci/darwin.yml
in_parallel_config
schema
Instead of passing in a list of steps to in_parallel
you can pass in the following fields. The list of steps will fall under the steps
field.
The steps to perform in parallel.
Using the in_parallel
step where possible is the easiest way to speeding up a builds.
It is often used to fetch all dependent resources together at the start of a build plan:
jobs:
- name: get-in-parallel
plan:
- in_parallel:
limit: 2
fail_fast: false
steps:
- get: ci
- get: repo
- get: code
resources:
- name: repo
type: mock
- name: code
type: mock
- name: ci
type: mock
Default unlimited. A sempahore which limits the parallelism when executing the steps in a in_parallel
step. When set, the number of running steps will not exceed the limit.
When not specified, in_parallel
will execute all steps immediately.
Using limit
is useful for performing parallel execution of a growing number of tasks without overloading your workers. In the example below, two tasks will be run in parallel and in order until all steps have been executed:
jobs:
- name: limit-in-parallel
plan:
- get: examples
- in_parallel:
limit: 2
steps:
- task: print-date
file: examples/tasks/print-date.yml
- task: hello-world
file: examples/tasks/hello-world.yml
- task: print-var
file: examples/tasks/print-var.yml
vars:
my-var: hello
second-var: good-bye
resources:
- name: examples
type: git
source:
uri: https://github.com/concourse/examples.git
Default false
. When enabled the parallel step will fail fast by returning as soon as any sub-step fails. This means that running steps will be interrupted and pending steps will no longer be scheduled.