VSTS 发布拉取请求构建触发器

VSTS release pull request build trigger

我的团队正在使用 VSTS 构建和发布机制,结合拉取请求分支安全设置,以便只有在拉取请求完成时才能合并代码。

虽然我们遇到了一些奇怪的事情,因为当创建拉取请求(并生成构建以证明提交)时 - 由拉取请求触发的构建完成也会间接触发发布,因为我们有一个释放触发器设置。

这本身可能没问题,但是在 'completing' 拉取请求时也会发生另一个构建和发布周期!

有没有办法让 VSTS 发布触发器仅在拉取请求完成并合并到发布分支时启动?

谢谢!

您只需要克隆当前的构建定义并禁用 CI 构建,然后使用克隆的构建来验证创建的 PR。

首先,更改以下设置:

1.克隆构建。

单击 CI 构建的 ... 按钮 -> 克隆 -> 编辑克隆的构建定义 -> 禁用 CI 构建 -> 保存。

2。替换分支策略的克隆版本。

打开分支策略 -> 编辑构建验证策略 -> select 克隆的构建定义 -> 保存。

所以工作流程将是:

  1. 当拉取请求为 created/changed 时,将触发克隆构建。
  2. 当克隆构建排队成功后,即可完成PR。
  3. 当 PR 完成(更改已合并)时,CI 构建将被触发。
  4. 当CI构建排队成功时,将触发CD释放。

现在只有PR完成并合并到release分支,才会触发release定义

我们可以在发布触发器上指定一个分支过滤器,这样只有 master 版本才会触发发布。 PR 验证构建在不同的分支中完成。当获得批准并且分支被合并到 master 中时,这就是您想要触发发布的构建。

令人讨厌的是,他们不停地移动东西。在撰写本文时,编辑发布时,在管道下的工件下,工件上有一个圆圈,里面有闪电,工具提示显示 "Continuous deployment trigger" - 单击它。在右侧,如果触发器已启用,您将看到 "Build branch filters"。单击“+ 添加”和 select master 分支。保存发布定义。

至于做不同事情的构建,我们现在可以为任务设置条件,这样您就可以只在 PR 验证构建或主构建上有一个任务。运行。

https://docs.microsoft.com/en-us/vsts/build-release/concepts/process/conditions

使用构建任务的条件语句来验证 Build.Reason 是否为 "Pull Request"。

转到您的任务 > 展开 "Control Options" > "Run this task" > 在这个 select "Custom Contions"

在自定义条件中指定以下条件以过滤掉 PullRequest 构建 and(成功(), ne(变量['Build.Reason'], 'PullRequest'))

如果您选中了“启用持续集成”框(在“触发器”选项卡下),那么它将在 PR 完成后对另一个构建进行排队。我还没有尝试过,但你可以尝试添加另一个构建定义,使用手动触发器(通过分支策略)但是检查那个 CI 框......

图片来源:https://www.youtube.com/watch?v=uGAcWLnSU0A&t=582s