0

我正在修改我继承的大厅脚本。

我们有一个如下所示的管道:

[1]build - [2]test A - [3]test B - [4]publish - [5]deploy

我们的团队以前只使用主分支,但现在我们使用功能分支。

我对每个分支都进行了修改build step——不仅是主分支。但我只想为 master 分支构建publish step运行。

我怎样才能让它step 5只在为 master 分支step 1运行时运行?有没有办法在 Concourse 上做到这一点?

4

1 回答 1

0

如果同一管道构建了所有分支,那么要么您没有使用 git 资源,要么您使用的是支持多个分支的修改后的 git 资源。

我假设您所说的“步骤”1...5 是 Concourse 工作。

我可以看到两个选项。

  • 选项 1。简单但肮脏/误导。

在第 4 步和第 5 步开始时,检查 git 分支。如果不是master,立即返回成功。管道将保持绿色,发布和部署作业看起来像是已经运行,但实际上它们什么也没做。

  • 选项 2。稍微复杂一点,但方法正确。

使用两条管道。一个管道用于除 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获得。

于 2019-05-05T18:03:46.910 回答