Azure管道-如何指定失败构建时的自动重试

ram*_*ram 15 azure-devops

在 Jenkins CI 中,有一个“失败后重试构建”的插件,我们可以在其中指定希望在作业失败时自动触发构建的次数。

Azure Devops 中是否有类似的情况,当构建失败时管道将自动触发?

Paw*_*wan 32

自 2021 年 11 月起,似乎可以重试失败的任务,至少在 YAML 管道中是这样。

文档:自动重试任务

- task: <name of task>
  retryCountOnTaskFailure: <max number of retries>
Run Code Online (Sandbox Code Playgroud)

虽然这不会重试整个管道,但对于许多用例来说可能就足够了。


Fel*_*lix 10

目前,在Azure Devops中,我们没有这样的自动重试选项。

您可以在此处查看用户语音票证重新运行失败的构建任务/步骤

但是你可以指定一个rest api ?retry=true

PATCH https://dev.azure.com/{organizationName}/{ProjectID}/_apis/build/builds/{BuildID}?retry=true
Run Code Online (Sandbox Code Playgroud)

这将有助于重新运行失败的作业。

我创建了一个 PowerShell 演示:

$connectionToken="$(PAT)"
$base64AuthInfo= [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($connectionToken)"))
  
$response = Invoke-RestMethod 
    -Uri 'https://dev.azure.com/MyCustomOrganization/MyTestProject/_apis/build/builds/7364?retry=true&api-version=6.0'
    -ContentType "application/json-patch+json"
    -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}
    -Method PATCH
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助

  • @YujunDing-MSFT,我尝试了您的方法,方法是设置第二阶段,如果第一阶段失败,则运行第二阶段,这会导致以下错误:“无法重试管道 20210810.6,因为它当前未处于完成状态”。有什么解决方法吗? (2认同)