VSTS释放拉取请求构建触发器

时间:2017-08-02 19:36:42

标签: git azure-devops azure-pipelines azure-pipelines-release-pipeline

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

我们遇到了一些奇怪的事情,因为当创建一个pull-request(并且生成一个构建来证明提交)时 - 由pull请求触发的这个构建的完成也会间接触发一个release,因为我们有一个释放触发设置。

这本身可能没什么问题,但接下来发生的事情就是“完成”拉动请求,另一个构建&发布周期!

是否有一种方法可以在拉取请求完成并合并到发布分支时启动VSTS释放触发器?

谢谢!

4 个答案:

答案 0 :(得分:16)

我们可以在释放触发器上指定分支过滤器,这样只有master的构建才会触发释放。 PR验证构建在不同的分支中完成。批准后,分支合并为master,这就是您想要触发发布的构建。

令人讨厌的是,他们不停地移动东西。在撰写本文时,当在工件下的管道下,在工件下编辑一个版本时,内部有一个带有闪电的圆圈,工具提示显示“持续部署触发器” - 单击它。在右侧,如果启用了触发器,您将看到“构建分支过滤器”。单击“+添加”并选择主分支。保存发布定义。

至于构建做不同的事情,我们现在可以设置任务条件,使得任务只能在PR验证版本上运行或仅在主构建上运行。

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

答案 1 :(得分:9)

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

首先,更改以下设置如下:

<强> 1。克隆版本。

点击CI版本的...按钮 - &gt;克隆 - &gt;编辑克隆的构建定义 - &gt;禁用CI构建 - &gt;保存。

enter image description here

<强> 2。替换分支策略的克隆构建。

打开分支政策 - &gt;编辑构建验证策略 - &gt;而是选择克隆的构建定义 - &gt;保存。

enter image description here

所以工作流程将是:

  1. 在创建/更改拉取请求时将触发克隆的构建。
  2. 当克隆的构建成功排队时,您可以完成PR。
  3. PR完成后(已合并更改),将触发CI构建。
  4. 当CI构建排队成功时,将触发CD版本。
  5. 现在,只有PR完成并合并到release分支,才会触发发布定义。

答案 2 :(得分:0)

对Build任务使用条件语句来验证Build.Reason是否为“ Pull Request”。

转到您的任务>展开“控制选项”>“运行此任务”>在此下选择“自定义条件”

在“自定义”条件中,指定以下条件以过滤出PullRequest构建 and(succeeded(),ne(variables ['Build.Reason'],'PullRequest'))

答案 3 :(得分:0)

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

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