如何序列化VSTS CI分支构建

问题描述 投票:0回答:2

VSTS允许您通过指定分支模式来选择哪些分支自动触发CI构建。

但是,我的单元测试使用的是真正的数据库,当多个构建触发时会导致问题。 master和feature-123因为它们会在数据库测试中发生冲突。

有没有办法指定只应该运行一个这样的构建;我不想放弃对真实数据库执行测试,因为内存数据库和SQL Azure之间存在显着差异。

continuous-integration azure-devops
2个回答
1
投票

VSTS已经序列化了由相同CI构建触发的构建。

甚至CI构建也可以由多个分支触发,但是在一定时间内,默认情况下只运行一个构建(除非您使用管道同时运行构建)。

例如,如果master分支和feature-123分支在当时被推送到远程仓库,CI构建定义将串行地(不同时)分成两个构建。


如果您正在使用管道并且需要串行运行触发的构建,则应确保只有一个代理用于CI构建。您可以使用以下方式:

在CI构建定义 - >选项选项卡 - >添加需求以指定要用于CI构建的代理。

假设在默认代理程序池中,有三个代理程序名称的代理程序:default1,default2和default3。

如果需要指定default2代理来运行CI构建,则可以按如下方式添加需求:

enter image description here

现在,即使多个分支同时被推送,它们也将被逐个触发,因为只有一个代理可用于CI构建。


0
投票

如果你想通过.yml或.yaml文件来做,你可以做以下

- phase: Build 
  queue: 
    name: <Agent pool name> 
    demands: 
    - agent.name -equals <agent name from agent pool> 
  steps: 
    - task: <taskname> 
      displayName: 'some display name' 
      inputs: 
        value: '<input variable based on type of task' 
        variableName: '<input variable name>'
© www.soinside.com 2019 - 2024. All rights reserved.