VSTS - 在单个git提交中构建订单

时间:2017-09-28 09:13:16

标签: azure-devops azure-pipelines azure-pipelines-release-pipeline

我想知道是否可以在vsts中的单个提交中设置构建顺序/优先级。

我遇到的情况是:

我有一个包含多个项目的解决方案(一个存储库)。

  • 发布者
  • Subscriber1的
  • subscriber2用户
  • 消息

每个(期望消息)都有一个构建定义,每个项目都有路径过滤器(持续集成),并且释放(持续部署触发器)并在之后初始化。

项目不依赖于彼此,期望用于沟通的消息。

因此,如果我对Publisher项目和任何Subscriber项目进行更改,然后提交,我希望始终首先构建和发布Publisher项目。

因为如果订阅者想要订阅新创建的消息,发布者现在需要。

这样的事情可能吗?

2 个答案:

答案 0 :(得分:1)

VSTS无法指定现在由相同代码触发的CI构建的顺序。

我发布了一个用户语音Specify queue builds order if there has multiple CI builds are triggered by the same code,您可以投票并跟进。

目前,您可以使用以下解决方法:

  1. 为所有项目构建即使只对某个项目进行了更改(发布者或订阅者)

    如果您可以构建所有项目,即使项目只有更改,您也可以定义构建定义以构建其中的所有项目。然后使用此构建作为CI构建来替换多个CI构建。

  2. 为所有相关任务设置自定义条件

    您仍然需要在一个构建定义中定义所有任务,并添加两个变量publishersubscriber,其默认值为0

    在构建开始时添加PowerShell任务以检查哪些项目已更改。如果更改了Publisher项目,请将publisher变量设置为值1。如果订阅者项目已更改,请将subscriber变量设置为值1

    然后将c ustom conditions用于相关项目。例如在build Publisher项目任务中,使用自定义条件:and(succeeded(), eq(variables['publisher'], '1'))

    enter image description here

    然后该任务仅在publisher变量为1时运行。您也可以参考this post使用自定义条件的方式。

答案 1 :(得分:0)

解决方法是将您的优先级构建设置为由持续集成 Rolling builds 模式中触发的其他构建触发。 Rolling构建将在开始之前等待CI