不允许并发运行Azure开发人员

时间:2020-10-27 10:58:10

标签: python unix azure-devops

我是一个合并前的PR验证管道A,它具有4个部署到Salesforce组织的阶段:

  1. Git结帐
  2. ANT Deploy软件包1
  3. ANT Deploy软件包2

由于此管道在每个PR引发事件上排队,因此我们已经达到了这样一种情况,即部署线程彼此冲突且由于依赖关系而失败(不幸的是,Salesforce组织一次只能运行1个线程。)。

我想确保下一次运行直到第一个运行完成后才开始。它保留在队列中,但不会启动。

例如:2个PR在2次跑步中提高了结果(跑步1和跑步2)。尽管Run#2已排队,但我不希望它在Run#1完成之前就开始执行(构建结果状态并不重要,因为它们将来自不同的状态分支)。

在Jenkins中,不允许并发构建就是答案。

1 个答案:

答案 0 :(得分:0)

在Azure Devops中,恐怕没有这样的设置,不允许在多阶段管道中进行并发构建。

我可以重述您的情况。触发两个管道运行时,阶段将交替运行。目前暂无控制顺序的选项。

解决方法:

您可以将批准类型环境添加到构建定义中。

以下是步骤:

第一步:在管道->环境

中创建一个环境

第2步:将批准添加到环境中。

enter image description here

第3步:更改Yaml定义。

pool:
  vmImage: 'ubuntu-latest'
  
stages:
- stage: QA
  jobs:
  - deployment: test
    displayName: deploy Web App
    pool:
      vmImage: 'Ubuntu-latest'
    environment: 'test'
    strategy:
      runOnce:
        deploy:
          steps:
          - script: echo Hello world


- stage: QB
  jobs:
  - job:
    steps:
     - script: echo "B"

- stage: QC
  jobs:
  - job:
    steps:
     - script: echo "B"
    
- stage: QD
  jobs:
  - job:
    steps:
     - script: echo "B"

注意:如果需要将环境添加到yaml,则工作为部署类型。

然后,当两个PR触发管道时,需要批准两次运行。在这种情况下,您可以手动控制其运行顺序。

另一方面,此要求很有价值。

您可以在our UserVoice site(这是我们提供产品建议的主要论坛)上添加对此功能的请求。感谢您帮助我们构建更好的Azure DevOps。