Trigger job after multiple parallel pipelines have finished

#1

I want to run a job (or pipeline) after an arbitrary amount of pipelines have run. Schematically it looks like this:

A \
B —> D
C /

Pipeline D should run after pipelines A, B and C have completed successfully. What would be the best way to handle this with Concourse?

#2

Hello, welcome to Concourse!

What you are looking for is called a gate. Have a look at the following two examples:

#3

Hi Marco,

Thanks for you reply. I’ve been looking at the gate-resource from Meshcloud but I’m having a hard time wrapping my head around how to use this properly. My scenario is this: I have a list of accounts that I deploy my application to with a pipeline that consists of multiple jobs. Those accounts are split in acceptance and production environments. What I want, is to deploy the application to all my acceptance accounts first and only after successful deployment to acceptance, start the deployment to my production accounts.

I’ve tried with the gate resource but I can’t make it work. It seems to trigger prematurely on any successful pipeline run. Could you help with a simple example pipeline that pushes an autoclose gate and waits for all the pipelines to finish before the next pipeline is triggered?