我正在修改继承的主题脚本。
我们有一个看起来像这样的管道:
[1]build - [2]test A - [3]test B - [4]publish - [5]deploy
我们的团队以前只与master分支合作,但现在我们正在使用功能分支。
我对build step
进行了修改,使其可以在每个分支上运行-不仅是master。但是我希望publish step
仅针对master分支版本运行。
如何使step 5
仅在为主分支运行时运行step 1
?在Concourse上有这样做的方法吗?
答案 0 :(得分:0)
如果同一管道构建了所有分支,则说明您不使用git资源或使用支持多个分支的修改后的git资源。
我假设您所说的“步骤” 1 ... 5是Concourse工作。
我可以看到两个选择。
在步骤4和5的开始,检查git分支。如果不是高手,请立即返回成功。管道将保持绿色,并且发布和部署作业看起来像已经运行,而实际上却什么也没做。
使用两个管道。除master以外的所有分支的一条管道。该管道将仅包含步骤1 ...3。第二个管道将跟踪master分支并具有所有步骤1 ... 5。
现在的问题是如何以DRY方式管理这两个管道(没有代码重复,管道不可能彼此漂移)?
答案是使用https://github.com/geofffranks/spruce之类的YAML合并工具。自述文件提到了BOSH,但这是一个完全通用的YAML合并工具。
最后一部分是如何保持DRY并同时指定不同的分支。可以使用https://concourse-ci.org/setting-pipelines.html#pipeline-vars获得。