【问题标题】:Azure pipeline - How to specify auto retry on failure buildsAzure 管道 - 如何指定失败构建时的自动重试
【发布时间】:2021-04-01 19:10:44
【问题描述】:

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

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

【问题讨论】:

    标签: azure-devops


    【解决方案1】:

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

    您可以在这里查看用户语音票Rerun failed build task/step

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

    PATCH https://dev.azure.com/{organizationName}/{ProjectID}/_apis/build/builds/{BuildID}?retry=true
    

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

    我创建了一个 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
    

    希望对你有帮助

    【讨论】:

    • 感谢您的建议。我认为这个重新运行的 api 应该可以工作。你介意我问如何使用powershell调用这个rest api吗?它需要一个正文还是只需要一个 URL 就足够了?请提出建议。
    • 太棒了! @ram 你可以Accept it as an Answer,所以它可以帮助遇到同样问题的其他社区成员,我们可以存档这个帖子,谢谢。
    • @YujunDing-MSFT 我已经尝试了您的方法,如果第一个阶段失败,则设置第二个阶段运行,这导致以下错误:Unable to retry pipeline 20210810.6 because it is not currently in the completed state。有什么解决方法吗?
    【解决方案2】:

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

    文档:Automatic retries for a task

    - task: <name of task>
      retryCountOnTaskFailure: <max number of retries>
    

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

    【讨论】:

    • 感谢您的回复。谢谢你让我知道。是的。这对于我的实现来说已经足够了。
    猜你喜欢
    • 2021-10-09
    • 2021-01-03
    • 2019-03-18
    • 2020-01-01
    • 2019-10-21
    • 2019-04-28
    • 1970-01-01
    • 2022-12-14
    • 2019-06-12
    相关资源
    最近更新 更多