The section "Each Change Should Propagate through the Pipeline Instantly" in the Continuous Deliver book (pp. 118-119), describes a scenario where:
- The commit build is built for every change set
- The downstream phase, automated acceptance tests, are executed less frequently
So, for a given instance of the pipeline, the acceptance test phase might not get executed if that stage is currently in progress on an earlier instance of the pipeline.
Is it possible to implement #2? Go seems geared towards executing a given pipeline instance in its entirety. Certain stages are long-running (even when using parallelization), so it wouldn't be optimal to run that long-running stage if one is already in progress.
Comments
2 comments
One possible way to implement #2 is to have two pipelines. The stages to run for all change sets will be in the first pipeline. The stages to run less often will be in the second pipeline. The second pipeline is dependent on the first. In the second pipeline, its first stage will be set to be manual. A timer could be used on the second stage to start the pipeline on the desired frequency. The timer should have the effect of starting the manual stage.
The idea comes from this post.
I'll have to try that and see whether it works. The downside is that there won't be one pipeline to show how the various stages went. You'll have to navigate between the status of both pipelines to get the overall picture.
It turns out that I probably don't need to execute a pipeline stage less frequently. It looks like Go will take care of it for me. Consider a case where you have a commit stage followed by a longer running acceptance test stage. When the current acceptance test stage completes, Go will start the acceptance test stage from the most recent pipeline pipeline. And, it won't attempt to run the acceptance test stage of any running pipelines between them. In effect, you get a stage running as frequently as the servers can handle.
See attached PDF for more details on this scenario.
Please sign in to leave a comment.