对 Azure DevOps 中多个管道中的阶段顺序进行排序

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

我在 Azure Devops 中有微服务 monorepo,每个嵌套服务都有管道。

root
  /app1/app1-pipeline.yml
  /app2/app2-pipeline.yml
  /app3/app3-pipeline.yml

每个管道都有 2 个阶段:

  1. 用于构建和推送 docker 镜像
  2. 检出另一个存储库,运行 py 脚本并 git 推送输出(带有元数据)。

例如,当同一个提交触发 3 个管道时,我可以看到阶段的执行顺序如下:

  1. App1 - 第 1 阶段
  2. App2 - 第 1 阶段
  3. App3 - 第 1 阶段
  4. App1 - 第 2 阶段
  5. App2 - 第 2 阶段
  6. App3 - 第 2 阶段

我正在寻找一种方法来“强制”执行顺序如下:

  1. App1 - 第 1 阶段
  2. App1 - 第 2 阶段
  3. App2 - 第 1 阶段
  4. App2 - 第 2 阶段
  5. App3 - 第 1 阶段
  6. App3 - 第 2 阶段

换句话说,我希望运行程序一个接一个地顺序执行管道,而不是混合它们。

我找不到解决方案。

这可能吗,或者可能不推荐(为什么)?

提前谢谢您!

azure-devops azure-pipelines pipeline
1个回答
0
投票

如果同时触发多个管道,则无法按照您的要求排序阶段的运行。


对于您的情况,作为解决方法,您可以考虑如下方法:

  1. 在每个管道中,您可以使用“

    dependsOn
    ”键来排序阶段的运行。

    # Stage B will run after stage A complete.
    # By default, stage A should complete successfully.
    stages:
    - stage: A
      . . .
    
    - stage: B
      dependsOn: A
      . . .
    
  2. 要订购管道的运行,您可以使用管道资源触发器(管道完成触发器)。

    • 在App2的管道中,设置如下配置。

      trigger: none # Disable CI trigger.
      resources:
         pipelines:
         - pipeline: App1
           source: App1 # Actual name of the pipeline for App1.
           trigger: true
      
    • 类似,在App3的pipeline中,设置如下配置。

      trigger: none # Disable CI trigger.
      resources:
         pipelines:
         - pipeline: App2
           source: App2 # Actual name of the pipeline for App2.
           trigger: true
      

通过上述配置,各个阶段将按照您期望的顺序运行。


© www.soinside.com 2019 - 2024. All rights reserved.