GoCD中的流水线排序
在GoCD中,我们使用两种不同类型的流水线排序方式:
- 调度顺序:流水线被调度的时间顺序。
- 自然顺序:基于材料修改的流水线时间顺序
大多数情况下,调度顺序和自然顺序是一致的。用户逐步提交并构建,因此构建的调度顺序与变更的提交顺序相同。现在通过“带选项触发”功能,可以触发带有旧版本材料的流水线。在这种情况下,由仓库报告的材料变更和包含这些变更的流水线顺序并不相同。
示例
Order of check-ins retrieved from Hg log:
changeset: 10689:6dbb27e86dc9
branch: trunk
tag: tip
user: ShilpaG
date: Tue Apr 27 09:52:15 2010 +0530
summary: fixing twist test EnvironmentScreenPermissions
changeset: 10688:2b5b25a68117
branch: trunk
user: JJ
date: Tue Apr 27 08:45:29 2010 +0530
summary: fixing broken twist test
changeset: 10687:6f91bbb648fa
branch: trunk
user: PS
date: Mon Apr 26 15:28:16 2010 +0530
summary: #3889 - Added the twist test for the stage details actions.
Pipeline instance 1 has revision: 10687:6f91bbb648fa
Pipeline instance 2 has revision: 10689:6f91bbb648fa
Pipeline instance 3 has revision: 10688:2b5b25a68117
基于调度的流水线顺序是:1、2、3。这是它们被触发的顺序。
基于自然顺序的流水线顺序是:1、3、2。这是因为,如果我们查看每个流水线实例中的变更,1具有最早的修订集,3具有下一组修订,而2在该特定仓库(材料)中具有最新的修订。
上述示例适用于只有一种材料的情况。如果流水线有多种材料,GoCD会检查所有材料的时间戳,以确定哪个是逻辑上更早的流水线实例。在这种情况下,较早的实例是指在所有材料中具有最早时间戳的那个。
当我们使用“带选项触发”时,GoCD支持材料的自然排序。用户可以更改所有材料的版本,或者选择某个特定材料(可能是导致构建失败的那个),并将所有其他材料固定到特定版本(最后一个已知的良好版本)。