GoCD依赖管理
当你拥有非平凡的依赖管道链时,你可能会关注依赖管道和材料如何交互。例如,代码和测试作为同一提交的一部分被检入。但是代码是按顺序构建和测试的,因此必须对构建和测试代码的管道使用相同的材料版本。本节介绍了一些依赖管理的概念以及GoCD如何处理某些复杂场景。
在整个依赖链中传播材料修订版
如果你频繁更新材料,同时长时间运行的依赖管道共享相同的材料,你可能会遇到触发依赖链的修订版不再是最新修订版的情况。Go跟踪了触发依赖链的修订版,并确保该版本在整个链条的所有成员中传播。这有助于确保作为该构建生成的所有工件共享一个共同的修订版。
示例
考虑以下依赖链:
图例
- 版本控制系统(SCM): 仓库
- rev1, rev2: 仓库中的签入
- A: 开发构建管道
- 依赖B: 验收测试管道
运行方式
- 代码被签入到SCM (rev1)
- 开发构建 (A) 由签入触发
- 另外一次签入到SCM (rev2)
- 开发构建完成 (使用rev1) 并触发验收测试 (B)
- 这里依赖管理就发挥了作用。Go足够智能,可以检测到最初触发构建的是rev1,并确保验收测试签出该修订版 (rev1) 而不是最新修订版 (rev2)。在这种情况下,Go确保了适当的验收测试版本针对适当的开发构建版本运行。