将两个阶段分叉回一个 azure pipeline

Forking two stages back into one azure pipeline

我目前正在研究 azure devops yaml 管道。 管道的结构看起来像这样:

如您所见,我有多个“分支”,在一种情况下,我想将“分支方式”合二为一。 (在 download_from_source 阶段之前)。 noapproval 阶段有点多余,我想删除它。

有没有办法在没有额外阶段的情况下实现这一点? 所以它看起来像这样?

不太确定您要实现的目标,但这里有一个示例,说明如何在阶段中设置变量并将它们用作未来步骤的条件。

我假设的批准检查阶段 运行 进行一些检查以验证管道是否应该 运行。因此,如果这些检查通过,我们可以设置一个输出变量,然后使用该变量来调节下载任务。如果检查失败则 approval=false 并且下载任务将不会 运行.

pool: default
variables:
  system.debug: true

stages:
  - stage: check_package
    jobs:
    - job: check_package
      steps:
        - bash: echo "checking package"

  - stage: approval_check
    jobs:
    - job: bash
      steps:
      # run some checks and if succesful we can set set output variable approved=true
        - bash: echo "##vso[task.setvariable variable=approved;isOutput=true]true"
          name: approval

  - stage: download
    dependsOn: approval_check
    condition: and(succeeded(), eq(dependencies.approval_check.outputs['bash.approval.approved'], 'true'))
    jobs:
    - job: download
      steps:
        - bash: echo "Downloading"

  - stage: download2
    dependsOn: approval_check
    condition: 
    jobs:
    - job: download
      steps:
        - bash: echo "Downloading"