我有一条简单的Azure管道,包括两个阶段:
第1阶段构建源代码并将二进制文件推送到Azure工件。第2阶段下载第1阶段的二进制文件,并针对它们运行多个测试,对不同的测试使用不同的作业:
这些任务是完全独立的,并且并行运行。
如果所有阶段和作业都成功了,如何在第2阶段手动触发作业3而不触发第2阶段的第1阶段和第2阶段的作业1和2?
一个丑陋的工作可能是使用变量并以某种方式运行一个新管道,如果设置了变量,跳过第1阶段,然后从以前的管道下载二进制文件。有没有更好的方法?
编辑: ms社区正在进行一个类似的主题:https://developercommunity.visualstudio.com/idea/697467/manually-triggered-stages-in-yaml-multi-stage-pipe.html?childToView=903723#comment-903723
发布于 2020-02-01 22:03:30
如果你把目前第二阶段中存在的个人乔布斯拉到他们自己的独立阶段,你就可以用多级管道做你想要做的事情。
一旦这样做,您就可以手动触发它们,以便重新运行。

或者,如果您有需要,也可以只使用阶段的一个子集启动一个新的运行。

发布于 2020-02-04 13:58:01
如果在yaml中定义发布管道,则可以通过添加condition: false来禁用/跳过多作业管道中的作业。
- job: Foo
condition: false有关详细信息,您可以参考此案例。
然后,您可以选择在运行多阶段管道时运行哪个阶段,通过这一点,您可以跳过Stage1。

https://stackoverflow.com/questions/60015932
复制相似问题