如何将GO_REVISION从上游管道传递到GO-CD中的下游管道?

时间:2017-01-13 08:42:03

标签: go-cd

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

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

管道D用于部署,它的材料是A,B和C.

但是,我不知道如何将GO_REVISION从上游管道(A / B / C)共享到D.

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

2 个答案:

答案 0 :(得分:0)

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

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

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

Image : Accessing GO_REVISION in Pipeline D

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

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

答案 1 :(得分:0)

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

ABC可以作为任务并行运行。为什么我这样说 - 因为它将确保ABC始终构建相同的Git提交。如果ABC是单独的管道,则可能存在竞争条件(例如,等待代理,构建失败等)。如果ABC在不同的源修订版上,GoCD将标记警告。但简单是最好的。

完成后,通过pipline标签获得对D的修订是明确的。

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