Git VSTS释放请求生成触发器

Git VSTS释放请求生成触发器,git,azure-devops,azure-pipelines,azure-pipelines-release-pipeline,Git,Azure Devops,Azure Pipelines,Azure Pipelines Release Pipeline,我的团队正在使用VSTS构建和发布机制,并结合拉请求分支安全设置,这样代码只能在拉请求完成时合并 不过,我们遇到了一些奇怪的情况,当创建拉请求(并生成一个构建以证明提交)时,由拉请求触发的这个构建的完成也会间接触发发布,因为我们有一个发布触发器设置 这本身可能是可以的,但是在“完成”拉请求之后,另一个构建和发布周期也会发生 是否有一种方法可以使VSTS释放触发器仅在拉请求完成并合并到释放分支时生效 谢谢大家! 您只需克隆当前生成定义并禁用CI生成,然后使用克隆的生成验证创建的PR 首先,更改以下

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

不过,我们遇到了一些奇怪的情况,当创建拉请求(并生成一个构建以证明提交)时,由拉请求触发的这个构建的完成也会间接触发发布,因为我们有一个发布触发器设置

这本身可能是可以的,但是在“完成”拉请求之后,另一个构建和发布周期也会发生

是否有一种方法可以使VSTS释放触发器仅在拉请求完成并合并到释放分支时生效


谢谢大家!

您只需克隆当前生成定义并禁用CI生成,然后使用克隆的生成验证创建的PR

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

1。克隆生成。

单击CI生成->克隆->编辑克隆的生成定义->禁用CI生成->保存的
按钮

2。替换分支策略的克隆生成。

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

因此工作流将是:

  • 创建/更改拉取请求时,将触发克隆的生成
  • 克隆生成成功排队后,您可以完成PR
  • PR完成后(更改已合并),将触发CI生成
  • 当CI生成排队成功时,将触发CD发行

  • 现在,只有PR完成并合并到
    发布
    分支中,发布定义将被触发。

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

    令人烦恼的是,他们不断地移动东西。在撰写本文时,当编辑发布时,在管道下,工件下,工件上,有一个圆圈,里面有一个闪电,工具提示显示“连续部署触发器”-单击该圆圈。在右边,如果触发器被启用,您将看到“构建分支过滤器”。单击“+添加”并选择主分支。保存发布定义

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


    对生成任务使用条件语句来验证生成是否正确。原因是“拉请求”

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

    在自定义条件中,指定以下条件以筛选出PullRequest生成
    和(succeed(),ne(variables['Build.Reason'],'PullRequest'))

    这个解决方案肯定会工作,但它没有我想要的那么优雅。这里有两个问题-首先,我们创建了一个更难维护的构建副本。其次,门控构建可能有一些根本不需要再次运行的步骤,例如lint和test(因为它们刚才在同一代码上成功运行)。但是分离工件创建还需要再次从门控构建运行一些构建步骤。我的问题是-你能提供一个解决方案,在门控和CI构建之间不存在任务重复吗?如果有人在主分支上运行CI构建而没有请求拉入,会怎么样?它还将触发CD发行管道!!?在我看来,这是最优雅、最正确的答案。如果您想在PR合并到开发分支时发布库的alpha版本,该怎么办?在这种情况下,您希望仅当分支策略中的条件都已满足(注释解析、构建等)且PR最终完成时,才会发布这些版本,是吗?