PATTERN Cited by 1 source
Parent-child pipelines for CI parallelism¶
Pattern¶
Split a single CI pipeline into one parent pipeline and N child pipelines that the parent fans out to in parallel. Each child is its own pipeline file (first-class CI artefact), so config is reusable, but the child is triggered from the parent in a single run rather than being a standalone triggered pipeline.
This lets CI pipelines parallelise across independent validation variants (different product distributions, different platforms, different test suites) without duplicating pipeline config or forcing every run to take the full serial cost.
Canonical instance¶
Atlassian's Jira team uses this for their Bitbucket Merge Queues pipeline. Jira's merge-queue pipeline fans out to three parallel parent-child pipelines, one per product distribution, so the merge-queue validation (which has to stay fast enough to keep queue-latency bounded) parallelises across distributions without needing three copies of the pipeline config.
"Then, we defined the merge queue pipeline to run three parallel steps (parent-child pipelines) to validate the Pull request against the future state of the target branch for different distributions of the product. Parent-child pipelines enabled the Jira team to simplify its CI/CD workflows and improve reusability by allowing calls to downstream pipeline files." (Source: sources/2026-04-29-atlassian-inside-atlassians-merge-queues)
When to apply¶
- Multiple validation variants share most of the setup. The parent does the shared setup once; each child handles one variant.
- The variants are independent. One variant's failure shouldn't halt the others (they run in parallel). If variants are dependent, a linear pipeline or DAG is the right shape.
- Variants evolve independently. Parent-child pipeline config stays manageable over time because each child is a separate file; DRY concerns across variants live in the parent.
Why it fits merge queues¶
Merge-queue pipelines are latency-bound — the queue's throughput is shaped by how fast the merge-queue pipeline can validate a future state. Parent-child parallelism is a straightforward win: validate three product distributions in the wall-clock of the slowest, not the sum of all three.
Composes with¶
- patterns/validate-against-future-state-of-main — the canonical reason Jira uses parent-child for their merge-queue pipeline.
- patterns/eject-failing-pr-keep-queue-running — if any child fails, the merge-queue pipeline fails as a unit and the PR is ejected.
Seen in¶
- sources/2026-04-29-atlassian-inside-atlassians-merge-queues — Jira's three-parallel-parent-child merge-queue pipeline across three product distributions.