Azure DevOps - 一个存储库中的两个依赖 YAML 管道
Azure DevOps - two dependent YAML pipelines in one repository
我的存储库中有两个 .yml
文件。一个用于构建,一个用于部署。我想将构建与部署分开的主要原因是我还想在我的存储库中存储环境变量,e.i。在 variables-dev.yml
和 variables-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" 部分。它将按照您的描述暂存您的构建
我的存储库中有两个 .yml
文件。一个用于构建,一个用于部署。我想将构建与部署分开的主要原因是我还想在我的存储库中存储环境变量,e.i。在 variables-dev.yml
和 variables-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
trigger: none
resources:
pipelines:
- pipeline: ci-pipeline
source: my-build-pipeline
trigger:
enabled: true
branches:
include:
- master
将第二个 yml 的触发器设置为 none
,然后将此设置添加到 UI 的 "Triggers" 部分。它将按照您的描述暂存您的构建