Azure devops 如何重新运行一个成功的azure devops YAML管道阶段以及随后的任何阶段?

Azure devops 如何重新运行一个成功的azure devops YAML管道阶段以及随后的任何阶段?,azure-devops,azure-pipelines,Azure Devops,Azure Pipelines,阶段A->B->C->D C失败了,错误表明阶段B的输出有问题,即使它成功了。作为一个失败的阶段,我可以重新运行C,如果D成功,它将运行(在本例中,它仍然失败)。我可以重新运行B,它再次成功,但是C和D被“跳过”,我找不到(重新)运行它们的方法 如何重新运行B以使C和D继续成功?我使用此生成配置进行了测试: 阶段: -阶段:测试 工作: -工作:A 步骤: -bash:echo“A” -阶段:部署1 dependsOn:Test#此阶段在测试后运行 工作: -工作:A 步骤: -bash:ech

阶段A->B->C->D

C失败了,错误表明阶段B的输出有问题,即使它成功了。作为一个失败的阶段,我可以重新运行C,如果D成功,它将运行(在本例中,它仍然失败)。我可以重新运行B,它再次成功,但是C和D被“跳过”,我找不到(重新)运行它们的方法


如何重新运行B以使C和D继续成功?

我使用此生成配置进行了测试:

阶段:
-阶段:测试
工作:
-工作:A
步骤:
-bash:echo“A”
-阶段:部署1
dependsOn:Test#此阶段在测试后运行
工作:
-工作:A
步骤:
-bash:echo“A”
-powershell:调用WebRequest-URIhttps://some-endpoint.free.beeceptor.com/my/api/some
-阶段:部署2
dependsOn:Test#此阶段在测试后与DeployUS1并行运行
工作:
-工作:A
步骤:
-bash:echo“A”
-阶段:欧洲
dependsOn:#此阶段在DeployUS1和DeployUS2之后运行
-部署1
-部署2
工作:
-工作:A
步骤:
-bash:echo“A”
我通过从
https://some-endpoint.free.beeceptor.com/my/api/some
,因此:

当我将模拟规则更改为返回
200
并重新运行失败的作业时,我得到了
DeployUS1
并执行了下一阶段
DeployEurope

这与您预期的一样有效,并且:

现在,当执行失败时,您可以重试管道阶段。在第一次尝试中失败的任何作业以及那些可传递地依赖于这些失败作业的作业都将重新尝试

因此,如果您观察到的结果与此不同,则可能是由于错误使用依赖项造成的:

阶段:
-阶段:功能测试
工作:
-工作:
...
-阶段:验收测试
dependsOn:[]#这将删除对前一阶段的隐式依赖,并使其并行运行
工作:
-工作:
...
我重新运行通过的
测试
,它触发了下一个阶段:

DeployUS1
DeployUS2
完成
DeployEurope
自动启动时:


重新运行测试。您的设置正确(感谢您的重做,我的yaml仍然不够清晰)。使用DeployUS1失败,但您已进行了更改以使其成功-重新运行测试。“重新运行失败的作业”将如您所演示的那样工作。但是,如果您重新运行测试(已经成功),部署步骤将被跳过(这是我看到的),我希望它们会重新运行。我只是运行了
Test
,然后自动触发了所有下降阶段。你能检查我的编辑吗?嗨@B.McKee,我没有得到你的最新信息,下面的答案对你有帮助吗?如果是,我们可以,在这种情况下,其他人可以直接找到有用的解决方案。或者,如果你有任何问题,请随意在这里分享,有点离题,但你说“我可以重新运行B”,即使它成功了。你是怎么做到的?我只看到失败阶段的“重新运行”选项。@ADroid如果您展开成功阶段,则在阶段块底部有一个[重新运行阶段]按钮。@B.McKee惊人!非常感谢。