.net 分支中的Azure.yaml管道文件策略
我有一个git分支策略,如下所示: 分支机构:.net 分支中的Azure.yaml管道文件策略,.net,git,azure,azure-devops,azure-pipelines,.net,Git,Azure,Azure Devops,Azure Pipelines,我有一个git分支策略,如下所示: 分支机构: experimental-feature integrates to develop develop integrates to master 其中,在每个分支中,我都有一个名为azure-pipelines.yaml的文件,该文件具有管道构建的规则,每个分支的规则都不同,因为每个文件都有一个与分支名称匹配的属性名trigger 例如:主分支有一个azure-pipelines.yml,它有一个名为“master”的触发器属性,因为对于主分支上
experimental-feature integrates to develop
develop integrates to master
其中,在每个分支中,我都有一个名为azure-pipelines.yaml的文件,该文件具有管道构建的规则,每个分支的规则都不同,因为每个文件都有一个与分支名称匹配的属性名trigger
例如:主分支有一个azure-pipelines.yml,它有一个名为“master”的触发器属性,因为对于主分支上的每个更改,都会触发一个管道。开发和试验功能也一样。
到目前为止还不错
现在,我不明白为什么当我创建一个从develope
到master
git的拉取请求时,git不知何故无法识别每个azure管道.yaml
(develope and master)之间的更改。这很好,因为develop中的azure pipeline.yml
总是会覆盖主azure pipeline.yaml
,我不希望这样
但是,当我通过pull-request集成时,从实验功能
到开发
git的更改是否能识别我不想要的文件之间的更改
有人能给我点化一下吗?我在Microsoft文档中也找不到这是如何工作的。您可以使用阶段的触发器和条件仅为特定分支运行特定阶段 我建议为所有分支和所有环境使用一个管道文件
azure pipeline.yml
。然后,您可以为作业创建模板,即生成作业、部署到非生产作业等
像这样:
管道:
trigger:
- master
- dev
pr:
branches:
include:
- master
- dev
variables:
- name: vmImage
value: 'ubuntu-latest'
stages:
- stage: Build
displayName: Build stage
jobs:
- job: BuildJob
pool:
vmImage: $(vmImage)
steps:
- template: Jobs/build.yml
- stage: NonProd
displayName: Deploy non prod stage
condition: and(succeeded(), in(variables['build.sourceBranch'], 'refs/heads/master', 'refs/heads/dev'))
jobs:
- deployment: DeploymentJob1
pool:
vmImage: $(vmImage)
environment: non-prod
variables:
- template: Variables/non-prod.yml
strategy:
runOnce:
deploy:
steps:
- template: Jobs/deploy.yml
- stage: Prod
displayName: Deploy prod stage
condition: and(succeeded(), eq(variables['build.sourceBranch'], 'refs/heads/master'))
jobs:
- deployment: DeploymentJob2
pool:
vmImage: $(vmImage)
environment: prod
variables:
- template: Variables/prod.yml
strategy:
runOnce:
deploy:
steps:
- template: Jobs/deploy.yml
触发器
您可以使用阶段的触发器和条件仅为特定分支运行特定阶段 我建议为所有分支和所有环境使用一个管道文件
azure pipeline.yml
。然后,您可以为作业创建模板,即生成作业、部署到非生产作业等
像这样:
管道:
trigger:
- master
- dev
pr:
branches:
include:
- master
- dev
variables:
- name: vmImage
value: 'ubuntu-latest'
stages:
- stage: Build
displayName: Build stage
jobs:
- job: BuildJob
pool:
vmImage: $(vmImage)
steps:
- template: Jobs/build.yml
- stage: NonProd
displayName: Deploy non prod stage
condition: and(succeeded(), in(variables['build.sourceBranch'], 'refs/heads/master', 'refs/heads/dev'))
jobs:
- deployment: DeploymentJob1
pool:
vmImage: $(vmImage)
environment: non-prod
variables:
- template: Variables/non-prod.yml
strategy:
runOnce:
deploy:
steps:
- template: Jobs/deploy.yml
- stage: Prod
displayName: Deploy prod stage
condition: and(succeeded(), eq(variables['build.sourceBranch'], 'refs/heads/master'))
jobs:
- deployment: DeploymentJob2
pool:
vmImage: $(vmImage)
environment: prod
variables:
- template: Variables/prod.yml
strategy:
runOnce:
deploy:
steps:
- template: Jobs/deploy.yml
触发器
pr:
branches:
include:
- master
- dev
condition: and(succeeded(), in(variables['build.sourceBranch'], 'refs/heads/master', 'refs/heads/dev'))
condition: and(succeeded(), eq(variables['build.sourceBranch'], 'refs/heads/master'))