如何将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 +发布于 2017-02-03 02:05:03
那得看情况。如果您对存储库有任何用例,您应该将GIT ( material )作为Pipeline-D的依赖材料。
否则,您可以将GO_REVISION设置为任何上游管道的标签(让我们为管道A设置),并访问应包含GO_REVISION的管道D中的环境变量${GO_DEPENDENCY_LABEL_A}。Image : Setting Pipeline-A label to hold GO_REVISION
在上图中,将标签从${material_name}更改为${material_name:6}应该只包含来自SHA的前6个字母。
Image : Accessing GO_REVISION in Pipeline D
通常,如果您希望使用修订来表示构建,则会使用这种方法。
另一种方法是将其写入其中一个上游管道中的文件,并在下游管道中获取它。
发布于 2017-02-04 20:56:49
考虑将A、B和C放入单个管道中。
ABC可以作为任务并行运行。我为什么这么说--因为这将确保ABC总是建立在相同的Git提交之上。如果ABC是单独的管道,则有可能出现竞争条件(例如,等待代理、构建失败等)。如果ABC在不同版本的源代码上,GoCD将标记一个警告。但简单是最好的。
这样一来,通过pipline标签就可以很直接地修改到D。
然而。我总是将版本信息写入到平面文件中构建的工件中。额外的元数据使得在生产端保证代码的审计能力成为可能。您还应该将版本信息注入到应用程序用户界面(如果有)。
https://stackoverflow.com/questions/41630472
复制相似问题