我假设您的安装套件构建具有以下配置:
- 将“完成构建触发器”设置为 CI 构建,以便每次成功完成 CI 构建时,都会运行安装工具包构建。
- 一个 VCS Root,以便每次运行 Setup Kit 时,它都会从 VCS 获取自己的源。
问题是,如果 CI 构建需要两分钟,并且在该构建期间有更多 CI 更改,则 Setup Kit 构建将使用启动时的源,而不是触发 CI 构建的源。触发构建的不是 VCS 更改,而是 CI 项目,因此它与是否存在 VCS 更改无关。
Snapshot Dependencies
您缺少的是Snapshot Dependency。这可通过“依赖项”配置步骤 (#6) 获得。这仍然会触发项目,但会导致 CI 构建和设置工具包构建使用来自相同时间戳的相同源代码。您仍将获得两个 Setup Kit 构建,但每个构建都将直接与一个 CI 构建相关联。
静默期
因为每次成功的 CI 构建都会触发设置工具包构建,另一个选择是减少 CI 构建的数量。通过在 CI 构建上启用安静期,CI 只会在发生更改并且 X 时间没有任何新提交时启动。“有些东西变了,让我们等30秒,看看有没有更多的变化。如果没有什么新的东西,我们就会触发构建。” 这会将两个提交放在一个 CI 构建上,这将导致一个安装工具包构建。
同样,您可以在 Setup Kit 上移除 Finish Build 触发器,并将其更改为具有静默期的 VCS Trigger;将静默期设置为略长于 CI 项目运行所需的时间。这仍然允许您为每个提交创建一个 CI 构建,但是当有许多快速提交时,会将 Setup Kit 构建组合在一起。缺点是它将不再与成功的 CI 构建相关联。因此,在没有新更改的 2 分钟后(无论您的静默期是多少),即使 CI 构建处于失败状态,Setup Kit 也会触发。