如何将多级CICD yaml与pull请求相结合

如何将多级CICD yaml与pull请求相结合,yaml,azure-pipelines,pull-request,azure-devops-pipelines,multistage,Yaml,Azure Pipelines,Pull Request,Azure Devops Pipelines,Multistage,我最近在我的项目中应用了多级YAML,它由CI和CD组成 之后,我将分支策略设置为仅在创建请求时触发CI部分,方法是将条件添加到CD阶段以跳过它 trigger: branches: include: - master paths: include: ... stages: - stage: Build jobs: - job: Build pool: vmImage: 'windows-l

我最近在我的项目中应用了多级YAML,它由CI和CD组成

之后,我将分支策略设置为仅在创建请求时触发CI部分,方法是将条件添加到CD阶段以跳过它

trigger:
  branches: 
    include: 
    - master
  paths:
    include:
    ...

stages:
  - stage: Build
    jobs:
      - job: Build
        pool:
          vmImage: 'windows-latest'

        steps:
        ...
  
  - stage: Deploy
    condition: and(succeeded(), ne(variables['Build.Reason'], 'PullRequest'))
    displayName: 'Deploy'
    jobs:
      ... 
拉取请求完成后,整个CI/CD部分将再次触发,因为主分支已推入新代码。有没有办法防止CI再次运行,或者从上一次运行中下载工件,从而“恢复”CD


其思想是在创建拉请求时仅运行CI,并在拉请求完成时继续运行CD。

通过将CI和CD拆分为2个yaml文件来解决,其中CD使用CI中的工件

当PR在具有路径筛选器的分支策略中设置触发器时,请指定CI,并将CD设置为具有相同路径筛选器的相同分支的触发器。这样,自分支更新后,CD将在PR完成后触发,然后它将下载CI在PR期间创建的工件