My application has several libraries each with their own git repository. 
The repos provide material to individual pipelines that build the 
libraries. 

The build pipelines then feed to a revision packager pipeline that bundles 
the libraries into a revision package which then feeds into a deployment 
pipeline.

    REPO-A -> BUILD-A
    REPO-B -> BUILD-B
    REPO-C -> BUILD-C

    BUILD-A, BUILD-B, BUILD-C -> PACKAGE -> DEPLOY

Let's say BUILD-A and BUILD-B take 20 seconds to complete, but BUILD-C 
pipeline takes a few minutes to complete.

What I'm seeing is that when commits come in on multiple repos somewhat 
simultaneously, this results in multiple runs of the PACKAGE -> DEPLOY 
pipelines.  I'm trying to set up a gate that waits for all running builds 
to complete before continuing with PACKAGE.

I understand why that's the default behavior if you view each path through 
the graph as a unique run. The documentation also indicates that Fan-In 
only works if the SCM material for the entry pipelines is the exact same. 
So it seems I'm observing the documented behavior.

Is there a way to achieve what I'm trying to do where I can Fan-In from 
different SCM material?  I'm thinking like a way to override the "Fan-In 
Key" where it could use an arbitrary key to drive the Fan-In behavior 
instead of the repo URL.

If not, is there an obvious way I'm not seeing to break up my graph such 
that I can wait for all BUILD-* to complete with some kind of quiet period 
gate before continuing with PACKAGE -> DEPLOY? For example, once any of the 
BUILD-* pipelines have run, wait 45 seconds and if nothing else starts, 
then run PACKAGE -> DEPLOY.

Maybe the PACKAGE pipeline has to be manual trigger and ignores the BUILD-* 
pipelines for scheduling, then the "gate" is really just a script or 
something that uses the API to determine whether or not it's time to run?

Looking for any ideas I'm not seeing...
Thanks
 

-- 
You received this message because you are subscribed to the Google Groups 
"go-cd" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/go-cd/a318b4b4-7e24-445f-9103-16c1e4b46ac4n%40googlegroups.com.

Reply via email to