我的团队正在使用VSTS Build&释放机制,结合拉取请求分支安全设置,以便只有在拉取请求完成时才能合并代码。
我们遇到了一些奇怪的事情,因为当创建一个pull-request(并且生成一个构建来证明提交)时 - 由pull请求触发的这个构建的完成也会间接触发一个release,因为我们有一个释放触发设置。
这本身可能没什么问题,但接下来发生的事情就是“完成”拉动请求,另一个构建&发布周期!
是否有一种方法可以在拉取请求完成并合并到发布分支时启动VSTS释放触发器?
谢谢!
答案 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;保存。
<强> 2。替换分支策略的克隆构建。
打开分支政策 - &gt;编辑构建验证策略 - &gt;而是选择克隆的构建定义 - &gt;保存。
所以工作流程将是:
现在,只有PR完成并合并到release
分支,才会触发发布定义。
答案 2 :(得分:0)
对Build任务使用条件语句来验证Build.Reason是否为“ Pull Request”。
转到您的任务>展开“控制选项”>“运行此任务”>在此下选择“自定义条件”
在“自定义”条件中,指定以下条件以过滤出PullRequest构建 and(succeeded(),ne(variables ['Build.Reason'],'PullRequest'))
答案 3 :(得分:0)