如何将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 +
答案 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的修订是明确的。
然而。我总是将版本信息写入平面文件中的构建工件。额外的元数据可以保证生产端代码的审计能力。您还应该将版本信息注入应用程序用户界面(如果有)。