2017-08-02 33 views
4

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

我们正在经历一些奇怪的事情,因为当创建一个拉取请求(并且生成一个生成证明提交的时候) - 由pull请求触发的这个构建的完成也间接地触发了释放,因为我们有一个释放触发器设置。

这本身可能是好的,但是接下来发生的事情是'完成'拉请求,另一个版本&发布周期发生!

有没有办法让VSTS释放触发器只在拉取请求完成并且合并到发布分支时才启动?

谢谢!

回答

6

您只需要克隆您当前的构建定义并禁用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分支中,才会触发发布定义。

+3

这个解决方案肯定会起作用,但它并不像我想的那么优雅。这里有两个问题 - 首先我们创建了一个构建重复,这很难维护。其次,门控版本可能会有一些不必再次运行的步骤,例如lint和test(因为它们刚刚在相同的代码上成功运行)。但是,分离工件创建还需要再次运行来自门控构建的一些构建步骤。我的问题是 - 您可以提供一个解决方案,在门控和CI构建之间不存在任务重复? – kDar

2

我们可以在发布触发器上指定分支过滤器,这样只有主版本才会触发发布。 PR验证构建是在不同的分支中完成的。批准后,分支合并到主控中,这就是您想要触发发布的构建。令人烦恼的是,他们不停地移动东西。在撰写本文时,编辑发行版时,在管道下的工件下的工件上,内部有一个带有闪电的圆圈,工具提示指出“连续部署触发器” - 单击它。在右侧,如果启用了触发器,您会看到“构建分支过滤器”。点击“+添加”并选择主分支。保存发布定义。

至于构建做不同的事情,我们现在可以设置任务的条件,以便您可以让一个任务只在PR验证版本上运行,或者只在主版本上运行。

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