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

时间:2020-02-23 09:55:14

标签: azure azure-devops azure-pipelines azure-pipelines-yaml

我的仓库中有两个.yml文件。一种用于构建,一种用于部署。我想使构建与部署保持独立的主要原因是我还想在我的仓库中存储环境变量,例如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:
            ...

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

2 个答案:

答案 0 :(得分:0)

您必须使用trigger: none

开始deploy.yml
trigger: none

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

答案 1 :(得分:0)

将第二个yml的触发器设置为if (true) console.log('true'); else console.log('this will not log');,然后在用户界面的“触发器”部分中添加此设置。它将按照您的描述进行构建

enter image description here