【问题标题】:VSTS : automatically rebase/merge and requeue build validation gate in case of build expirationVSTS:在构建过期的情况下自动重新设置/合并和重新排队构建验证门
【发布时间】:2018-03-23 18:06:38
【问题描述】:

我们最近对 PR 的构建验证门进行了更改,如果另一个提交在当前 PR 完成之前进入主分支,则构建“立即”过期。见here

尽管此更改确保主节点始终准确/可构建/健康,但这似乎对开发人员的生产力几乎没有负面影响:

  1. 团队成员必须持续关注他们的 PR 以重新排列构建验证。
  2. 他们不仅必须手动将构建重新排队,而且在此之前,他们必须在重新排队之前手动重新定位其分支。
  3. 随着我们朝着更多更小/可交付的签入到 master 的方向发展,没有。这种情况发生的次数预计会增加。

我想自动化 (1) 和 (2)。有没有一种方法可以设置 VSTS 构建验证,以便对于所有打开的 PR,在构建到期时,它会自动将源分支与 master 重新绑定/重新合并,然后重新排队构建?

【问题讨论】:

  • VSTS 本身无法自动 requeue 和 rebase。您可以在文档 (docs.microsoft.com/en-us/vsts/git/…) 中找到立即构建过期选项,“此选项最适合具有重要更改量较少的分支。在繁忙的开发分支中工作的团队可能会发现每次更新受保护的分支时等待构建完成会造成破坏。
  • 另外,如果master分支用于生产版本,你还可以更改git分支模型(类似于nvie.com/posts/a-successful-git-branching-model这个),例如所有开发人员都在develop分支上工作。然后创建 PR 以将 develop 分支合并到 master 分支,立即体验就足够了。
  • 是否存在对此我可以投票的现有用户语音请求?或者我们可以创建一个新的吗?
  • 目前还没有这样的用户声音。您可以在此处创建一个新的 (visualstudio.uservoice.com/forums/…)。

标签: git azure-devops azure-pipelines azure-pipelines-build-task


【解决方案1】:

我在我的组织中遇到了这个确切的问题。当有多个 PR 都试图同时进入时,设置 Build expiration to Immediately 变得过于繁琐。

AFAIK - 无论何时更新 master,都无法自动触发所有针对 master 的 PR 的重建。如果您想挂接到 VSTS 事件并自己编写代码,我确信基础知识就在那里。但我上次查看时没有任何现成的东西。


我的组织所做的是接受妥协。我们配置 PR,以便构建在 1 小时后过期。这样,当多个 PR 尝试同时合并时,就不会发生争用。但是,这具有您在原始问题VSTS : Invalidating builds on existing PRs when another commit makes it into master branch 中描述的缺点,目标分支(即master)可能由于两个不兼容的 PR 的快速合并而损坏。

我们最终只是接受了这个限制

  • 我们的所有分支(功能、master 等)都有一个触发器,每当添加新提交时,我们都会自动触发新构建。这样,如果 PR 成功破解 master,我们会在几分钟内收到一封电子邮件。

  • 如果主分支(即master)损坏,所有新的 PR 将开始失败构建。因此,不能合并新的 PR。这通常会引起每个人的注意,因此问题很快就会浮出水面 - 整个团队开始努力修复 master

    李>
  • 在部署 master 之前,我们会运行完整的 VSTS 构建,包括单元测试。这样,如果主分支被破坏(由于两个不兼容的 PR 或任何其他原因),我们确保我们停止部署。

因此,很遗憾,我们不能保证master 始终100% 处于良好状态。达到 100% 只会对我们的工作流程和生产力产生太大的负面影响。因此,我们接受了我们的限制,并确保我们尽快收到通知,并且能够在分支中断时处理这种情况。

【讨论】:

  • 我认为这是一个公平的妥协,我可以在我们的团队中尝试。你是如何设置 (2) 的? (如果主构建被破坏,所有新的 PR 构建失败)
  • 哦“新”PR,所以应该有来自 master 的最新版本,因此构建应该失败。好的。明白了。
  • 谢谢!那真的很有帮助。尚未将此标记为已回答,希望从 VSTS 人员那里获得一些意见。会回来查看的。
  • @dparka - 是的,“新” PR 将被阻止合并,因为构建将失败,因为 master 已经被破坏。除非他们 (in) advenrtenly 修复了 master 上已经存在的任何问题。请等待 VSTS 加入 - 如果他们有更好的解决方案,我很乐意听到!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-16
  • 2019-02-08
  • 1970-01-01
  • 2019-09-28
  • 1970-01-01
相关资源
最近更新 更多