【问题标题】:How to combine multistage CICD yaml with pull request如何将多阶段 CI CD yaml 与拉取请求相结合
【发布时间】:2021-06-02 14:14:25
【问题描述】:

我最近为我的项目应用了多阶段 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。

【问题讨论】:

    标签: yaml azure-pipelines pull-request azure-devops-pipelines multistage


    【解决方案1】:

    通过将 CI 和 CD 拆分为 2 个 yaml 文件来解决,其中 CD 消耗来自 CI 的工件。

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

    【讨论】:

      猜你喜欢
      • 2022-11-14
      • 2020-01-13
      • 2014-04-07
      • 2020-12-13
      • 1970-01-01
      • 1970-01-01
      • 2019-08-14
      • 2019-11-19
      • 1970-01-01
      相关资源
      最近更新 更多