阶段A-> B-> C-> D。
C失败,并显示一个错误,该错误暗示了阶段B的输出中存在问题,即使它成功了。作为失败阶段,我可以重新运行C,如果D成功,D将运行(在这种情况下,它仍然会失败)。我可以重新运行B,它再次成功,但是C和D随后被“跳过”,我找不到找到(重新)运行它们的方法。
如何重新运行B,以便C和D成功执行?
答案 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
失败了,因此:
当我通过更改模拟规则以返回200
来解决此问题并重新执行失败的作业时,我得到了DeployUS1
并执行了下一阶段DeployEurope
:
这可以按您预期的方式工作,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
,并触发了下一阶段:
DeployUS1
和DeployUS2
完成后,DeployEurope
自动开始: