【发布时间】:2019-10-07 20:59:50
【问题描述】:
我有一个情况,两个提交合并到 master(例如 FIRST 和 SECOND)非常靠近(相隔几秒钟)。两者都触发了构建管道:FIRST 首先触发了管道,然后 SECOND 触发了它(构建并行运行)。无论出于何种原因,提交 SECOND 的构建管道首先完成,30 秒后提交 FIRST 的构建完成。
我的自动发布管道配置为始终从构建管道获取“最新”工件。上述事件顺序导致首先部署 SECOND 更改,然后部署 FIRST 更改(因为它的管道是第二个完成)并踩在先前的版本上,从而有效地将旧位部署到服务中。
有什么办法可以防止这种情况发生吗?即使构建管道由于间歇性原因而第二次完成,我也不希望发布版本会阻碍发生较早完成的最近更改。
编辑:感谢那些建议/支持批处理构建想法的人,但这不是我希望启用的选项。我仍然希望每个提交都触发它自己的构建(以便更轻松地分配构建中断原因)。我只是在寻找按提交顺序触发的版本,而不是构建完成的顺序。
谢谢!
【问题讨论】:
-
@AuthInfant 如果您正在并行运行管道,那么我不认为有一种内置的方法可以实现这一点。默认情况下,如果您设置了 CI/CD,则任何完成的构建都会触发发布。因此,将批处理设置为 true 以发布真正的最新更改。或者使用单个代理运行,因此所有构建都将在队列中运行。另外,如果您坚持这一点,那么我能想到的唯一方法是您可以尝试编写脚本来检查触发的版本是否是最新版本/提交,如果是最新版本则延迟一段时间完成.
-
@Auth Infant 你试过安迪的建议了吗?有什么好消息吗?
标签: azure-devops azure-pipelines