我想知道是否可以在vsts中的单个提交中设置构建顺序/优先级。
我遇到的情况是:
我有一个包含多个项目的解决方案(一个存储库)。
每个(期望消息)都有一个构建定义,每个项目都有路径过滤器(持续集成),并且释放(持续部署触发器)并在之后初始化。
项目不依赖于彼此,期望用于沟通的消息。
因此,如果我对Publisher项目和任何Subscriber项目进行更改,然后提交,我希望始终首先构建和发布Publisher项目。
因为如果订阅者想要订阅新创建的消息,发布者现在需要。
这样的事情可能吗?
答案 0 :(得分:1)
VSTS无法指定现在由相同代码触发的CI构建的顺序。
我发布了一个用户语音Specify queue builds order if there has multiple CI builds are triggered by the same code,您可以投票并跟进。
目前,您可以使用以下解决方法:
为所有项目构建即使只对某个项目进行了更改(发布者或订阅者)
如果您可以构建所有项目,即使项目只有更改,您也可以定义构建定义以构建其中的所有项目。然后使用此构建作为CI构建来替换多个CI构建。
为所有相关任务设置自定义条件
您仍然需要在一个构建定义中定义所有任务,并添加两个变量publisher
和subscriber
,其默认值为0
。
在构建开始时添加PowerShell任务以检查哪些项目已更改。如果更改了Publisher项目,请将publisher
变量设置为值1
。如果订阅者项目已更改,请将subscriber
变量设置为值1
。
然后将c ustom conditions
用于相关项目。例如在build Publisher项目任务中,使用自定义条件:and(succeeded(), eq(variables['publisher'], '1'))
。
然后该任务仅在publisher
变量为1
时运行。您也可以参考this post使用自定义条件的方式。
答案 1 :(得分:0)
解决方法是将您的优先级构建设置为由持续集成和 Rolling builds 模式中触发的其他构建触发。 Rolling构建将在开始之前等待CI