VSTS 发布拉取请求构建触发器
VSTS release pull request build trigger
我的团队正在使用 VSTS 构建和发布机制,结合拉取请求分支安全设置,以便只有在拉取请求完成时才能合并代码。
虽然我们遇到了一些奇怪的事情,因为当创建拉取请求(并生成构建以证明提交)时 - 由拉取请求触发的构建完成也会间接触发发布,因为我们有一个释放触发器设置。
这本身可能没问题,但是在 'completing' 拉取请求时也会发生另一个构建和发布周期!
有没有办法让 VSTS 发布触发器仅在拉取请求完成并合并到发布分支时启动?
谢谢!
您只需要克隆当前的构建定义并禁用 CI 构建,然后使用克隆的构建来验证创建的 PR。
首先,更改以下设置:
1.克隆构建。
单击 CI 构建的 ...
按钮 -> 克隆 -> 编辑克隆的构建定义 -> 禁用 CI 构建 -> 保存。
2。替换分支策略的克隆版本。
打开分支策略 -> 编辑构建验证策略 -> select 克隆的构建定义 -> 保存。
所以工作流程将是:
- 当拉取请求为 created/changed 时,将触发克隆构建。
- 当克隆构建排队成功后,即可完成PR。
- 当 PR 完成(更改已合并)时,CI 构建将被触发。
- 当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 框......
我的团队正在使用 VSTS 构建和发布机制,结合拉取请求分支安全设置,以便只有在拉取请求完成时才能合并代码。
虽然我们遇到了一些奇怪的事情,因为当创建拉取请求(并生成构建以证明提交)时 - 由拉取请求触发的构建完成也会间接触发发布,因为我们有一个释放触发器设置。
这本身可能没问题,但是在 'completing' 拉取请求时也会发生另一个构建和发布周期!
有没有办法让 VSTS 发布触发器仅在拉取请求完成并合并到发布分支时启动?
谢谢!
您只需要克隆当前的构建定义并禁用 CI 构建,然后使用克隆的构建来验证创建的 PR。
首先,更改以下设置:
1.克隆构建。
单击 CI 构建的 ...
按钮 -> 克隆 -> 编辑克隆的构建定义 -> 禁用 CI 构建 -> 保存。
2。替换分支策略的克隆版本。
打开分支策略 -> 编辑构建验证策略 -> select 克隆的构建定义 -> 保存。
所以工作流程将是:
- 当拉取请求为 created/changed 时,将触发克隆构建。
- 当克隆构建排队成功后,即可完成PR。
- 当 PR 完成(更改已合并)时,CI 构建将被触发。
- 当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 框......