我在Azure DevOps中的发布管道有一个工作。这项工作有3个任务:A,B,C。 我需要进行设置,以便B和C仅在A成功时运行,但是如果A成功并且B失败,则C仍然运行。
我似乎无法找出实现该目标的正确条件。根据{{3}},您可以使Task依赖于另一个Job的状态,但是看起来Task不可能依赖于另一个Task。
答案 0 :(得分:2)
默认情况下,每个任务仅在上一个任务成功时才执行,因此任务B仅在A成功时才执行。
您希望即使任务B失败,任务C也会被执行,因此请将此条件添加到任务B:
continueOnError: true
如果任务B失败,现在将执行任务C,但是如果任务A失败,则将跳过任务B和C。
例如3个PowerShell任务:
- powershell: 'Write-Host "A"'
displayName: A
- powershell: 'Write-Host "B"'
displayName: B
continueOnError: true
- powershell: 'Write-Host "C"'
displayName: C
在上述行为中,构建将为橙色(部分成功),并且如果您在C之后还有其他任务,它们也将被执行,如果您希望任务B将变为红色并且仅运行任务C之后,这样做并不容易,请查看this的问题和答案。
答案 1 :(得分:1)
您可以使用每个任务的控制选项来实现:
任务A:
floorShader->use();
floorShader->setMat4("projection", projection);
floorShader->setMat4("view", view);
floorShader->setVec3("viewPos", camera.Position);
floorShader->setMat4("lightSpaceMatrix", lightSpaceMatrix);
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, DepthMap->depthMapTexture);
ourFloor->draw(floorShader);
任务B:
[ ] continue on error
任务C:
[x] continue on error
希望这会有所帮助