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

VSTS - Build Order within a single git commit

我想知道是否可以在 vsts 中的单个提交中设置构建 order/priority。

我遇到的场景是这样的:

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

其中每一个(期望消息)都有一个构建定义,其中包含针对每个相应项目的路径过滤器(持续集成),然后发布(持续部署触发器)并在那里初始化。

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

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

因为发布者现在需要订阅者想要订阅的新消息。

这样的事情可能吗?

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

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

    那么任务只在publisher变量为1时运行。自定义条件的使用方法也可以参考

一种解决方法是将您的优先构建设置为由 持续集成 触发,而其他构建则在 滚动构建 模式下触发。 滚动构建将在开始前等待 CI