如何重新运行成功的天蓝色devops YAML管道阶段以及随后的任何阶段?

时间:2020-08-24 19:30:19

标签: azure-devops azure-pipelines

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

C失败,并显示一个错误,该错误暗示了阶段B的输出中存在问题,即使它成功了。作为失败阶段,我可以重新运行C,如果D成功,D将运行(在这种情况下,它仍然会失败)。我可以重新运行B,它再次成功,但是C和D随后被“跳过”,我找不到找到(重新)运行它们的方法。

如何重新运行B,以便C和D成功执行?

1 个答案:

答案 0 :(得分:1)

我使用以下构建配置进行了测试:

stages:
- stage: Test
  jobs:
  - job: A
    steps:
    - bash: echo "A"

- stage: DeployUS1
  dependsOn: Test    # this stage runs after Test
  jobs:
  - job: A
    steps:
    - bash: echo "A"
    - powershell: Invoke-WebRequest -URI https://some-endpoint.free.beeceptor.com/my/api/some

- stage: DeployUS2
  dependsOn: Test    # this stage runs in parallel with DeployUS1, after Test
  jobs:
  - job: A
    steps:
    - bash: echo "A"

- stage: DeployEurope
  dependsOn:         # this stage runs after DeployUS1 and DeployUS2
  - DeployUS1
  - DeployUS2
  jobs:
  - job: A
    steps:
    - bash: echo "A"

我通过从DeployUS1返回404而使阶段https://some-endpoint.free.beeceptor.com/my/api/some失败了,因此:

enter image description here

当我通过更改模拟规则以返回200来解决此问题并重新执行失败的作业时,我得到了DeployUS1并执行了下一阶段DeployEurope

enter image description here

这可以按您预期的方式工作,docs says

现在您可以在执行失败时重试管道阶段。在第一次尝试中失败的所有工作以及过渡性地依赖那些失败的工作的所有工作都将重新尝试。

因此,如果您发现与此不同,则可能是由于缺少依赖关系造成的:

stages:
- stage: FunctionalTest
  jobs:
  - job:
    ...

- stage: AcceptanceTest
  dependsOn: []    # this removes the implicit dependency on previous stage and causes this to run in parallel
  jobs:
  - job:
    ...

我重试了Test,并触发了下一阶段:

enter image description here

DeployUS1DeployUS2完成后,DeployEurope自动开始:

enter image description here