Azure DevOps - 一个存储库中的两个依赖 YAML 管道

Azure DevOps - two dependent YAML pipelines in one repository

我的存储库中有两个 .yml 文件。一个用于构建,一个用于部署。我想将构建与部署分开的主要原因是我还想在我的存储库中存储环境变量,e.i。在 variables-dev.ymlvariables-prod.yml 文件中。所以不需要每次都创建一个新的构建(包括 运行 测试,docker 图像构建等)。

文件build.yml:

trigger:
  paths:
    exclude:
      - build.yml
      - deploy.yml

stages:
- stage: build
  jobs:
  ...

deploy.yml,我只想在 build 管道完成时触发。这就是为什么我添加所有路径的第一个排除,但在管道资源上添加一个。

trigger:
  paths:
    exclude:
    - '*'

resources:
  pipelines:
    - pipeline: build
      source: build
      trigger:
        branches:
          include:
          - '*'

stages:
- stage: dev
  variables:
    - template: variables-dev.yml

  jobs:
  - deployment: deploy_dev
    environment: 'dev'
    strategy:
      runOnce:
        deploy:
          steps:
            ...

- stage: prod
  dependsOn: dev
  variables:
    - template: variables-prod.yml

  jobs:
  - deployment: deploy_prod
    environment: 'prod'
    strategy:
      runOnce:
        deploy:
          steps:
            ...

不幸的是,它似乎不起作用。顶部触发器阻止较低的触发器。如果我删除了顶部触发器,那么部署管道将与构建管道同时触发。

您必须从 trigger: none

开始您的 deploy.yml
trigger: none

resources: 
  pipelines:
  - pipeline: ci-pipeline
    source: my-build-pipeline
    trigger:
      enabled: true
      branches:
        include:
          - master

将第二个 yml 的触发器设置为 none,然后将此设置添加到 UI 的 "Triggers" 部分。它将按照您的描述暂存您的构建