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

问题描述 投票:12回答:3

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

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

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

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

谢谢!

git azure-devops azure-pipelines azure-pipelines-release-pipeline
3个回答
16
投票

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

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

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

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


9
投票

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

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

1.克隆构建。

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

enter image description here

2.替换分支策略的克隆构建。

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

enter image description here

所以工作流程将是:

  1. 在创建/更改拉取请求时将触发克隆的构建。
  2. 当克隆的构建排队成功时,您可以完成PR。
  3. PR完成后(已合并更改),将触发CI构建。
  4. CI构建排队成功后,将触发CD版本。

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


0
投票

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

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

在Custom条件中指定以下条件来过滤Pull Request Builds和(succeeded(),ne(变量['Build.Reason'],'Pull Request'))

© www.soinside.com 2019 - 2024. All rights reserved.