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