1

如何将 GO_REVISION 从上游管道传递到下游管道?

我有四个管道,A、B 和 C 管道由相同的 git 及其在 GO_REVISION 中的版本标记构建应用程序触发器。

用于部署的管道 D,其材料为 A、B 和 C。

但是,我不知道如何将上游管道(A/B/C)的 GO_REVISION 共享给 D。

              +--->Pipeline A +
              |               |
GIT (Material)+--->Pipeline B +------>Pipeline D (How get upstream GO_REVISION)
              |               |
              +--->Pipeline C +
4

2 回答 2

0

这取决于。如果您对存储库有任何用例,您应该将 GIT(材料)作为 Pipeline-D 的依赖材料。

否则,您可以将 GO_REVISION 作为任何上游管道的标签(让我们为管道 A 设置)并访问管道-D 中应保存 GO_REVISION 的环境变量 ${GO_DEPENDENCY_LABEL_A}。 图片:设置 Pipeline-A 标签以保存 GO_REVISION

在上图中,将标签从 ${material_name} 更改为 ${material_name[:6]} 应该只取 SHA 的前 6 个字母。

图片:在管道 D 中访问 GO_REVISION

如果您想使用修订来表示构建,通常会使用这种方法。

另一种方法是将其写入上游管道中的一个文件并在下游管道中获取它。

于 2017-02-02T18:05:03.463 回答
0

考虑将 A、B 和 C 放入单个管道中。

ABC 可以作为任务并行运行。我为什么这么说——因为它会确保 ABC 总是建立在相同的 Git 提交之上。如果 ABC 是单独的管道,则可能会出现竞争条件(例如等待代理、构建失败等)。如果 ABC 处于不同的源版本上,GoCD 将标记警告。但简单是最好的。

完成后,通过管道标签直接获得对 D 的修订。

然而。我总是将版本信息写入平面文件中的构建工件。额外的元数据可以保证生产端代码的审计能力。您还应该将版本信息注入应用程序用户界面(如果有的话)。

于 2017-02-04T12:56:49.010 回答