Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 分支中的Azure.yaml管道文件策略_.net_Git_Azure_Azure Devops_Azure Pipelines - Fatal编程技术网

.net 分支中的Azure.yaml管道文件策略

.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”的触发器属性,因为对于主分支上

我有一个git分支策略,如下所示:

分支机构:

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
触发器

  • 确保为开发和主分支触发直接签入生成
  • 确保PR到开发和主分支(目标)触发构建
  • 条件

  • 确保此阶段(非prod部署)仅针对Master和Dev运行,而不针对任何其他分支
  • 确保此阶段(产品部署)仅对主分支运行
  • 同样,你也可以混合搭配,以更好地满足你的目的

    请查看存储库以供参考:

    您可以使用阶段的触发器和条件仅为特定分支运行特定阶段

    我建议为所有分支和所有环境使用一个管道文件
    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到开发和主分支(目标)触发构建
  • 条件

  • 确保此阶段(非prod部署)仅针对Master和Dev运行,而不针对任何其他分支
  • 确保此阶段(产品部署)仅对主分支运行
  • 同样,你也可以混合搭配,以更好地满足你的目的

    请查看存储库以供参考:

    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'))