【问题标题】:VSTS Build expiredVSTS Build 已过期
【发布时间】:2018-02-21 21:43:21
【问题描述】:

我创建了一个触发构建的拉取请求并且构建成功,但一段时间后我的构建状态更改为“构建过期”,因此要完成拉取请求,我需要再触发一次。所以问题是:为什么会发生这种情况,如何避免构建过期?

【问题讨论】:

    标签: tfs azure-devops tfsbuild azure-pipelines


    【解决方案1】:

    “构建已过期”是分支策略的一项功能。 设置构建过期时间以确保对受保护分支的更新不会破坏打开的拉取请求中的更改。

    总是需要新版本

    当受保护的分支更新时,此选项将拉取请求中的构建策略状态设置为“失败”。您必须重新排队构建以刷新构建状态。此设置可确保即使受保护的分支发生更改,拉取请求中的更改也会成功构建。此选项最适合具有重要分支且更改量较少的团队。在繁忙的开发分支中工作的团队可能会发现每次更新受保护的分支时都等待构建完成会造成干扰。


    如果超过 ... 小时,则需要新版本

    如果通过的构建版本早于输入的阈值,则当受保护分支更新时,此选项会使当前策略状态过期。此选项是在受保护分支更新时始终需要构建和从不需要构建之间的折衷。当您的受保护分支频繁更新时,此选择非常适合减少构建次数。


    不需要新版本

    对受保护分支的更新不会更改策略状态。这会减少分支的构建数量,但在关闭最近未更新的拉取请求时可能会导致问题。


    More details on "Branch Policies"

    【讨论】:

    • 很好的解释!我建议从不太严格的选项“如果超过...小时需要新版本”开始。如果开发团队随着时间的推移看到拉取请求经常因为受保护分支的更改而中断,那么他们可以选择更严格的选项“始终需要新构建”。
    【解决方案2】:

    在推送请求的概览中,在“Build Expired”旁边 - 单击省略号(右侧 3 个点)并选择“Queue Build”。如果失败,拉出master,将其合并到您的分支中并重新推送。

    【讨论】:

    • 有什么办法可以自动完成吗?如果有 4-5 个拉取请求,那么点击每一个请求都很麻烦..
    • 我也在想同样的事情,对于 5+ 并发拉取请求手动执行此操作非常乏味
    • 根据Auto-complete does not retrigger expired build,这是一个经过深思熟虑的功能。
    • 大概可以编写一个脚本,通过 API 定期检查所有拉取请求,如果没有正在进行的构建并且有过期的构建,则重新排队一个过期的构建(最旧的,或最新,或按优先级,或随机)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-05
    • 1970-01-01
    • 2018-11-22
    • 2016-05-23
    • 2011-02-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多