Azure Devops YAML 管道中的手动触发阶段

问题描述 投票:0回答:4

我想在 YAML 中重新创建一个类似于这样的管道。

我已成功重新创建第一行 (A) 管道。

dependsOn
environmentName
和环境批准的组合可以解决这个问题。 但是,似乎没有办法在 YAML 中创建 B 和 C 管道。

我见过几个类似的问题,但大多数都不是我想要的,或者很老了没有解决方案。我怀疑现在不可能,但想确认一下。

azure azure-devops azure-pipelines azure-pipelines-release-pipeline azure-yaml-pipelines
4个回答
3
投票

将审批放在第一个环境前面。在获得批准之前不会触发。这就是您现在所能达到的最接近的结果。


1
投票

您可以根据参数进行控制,例如:

parameters:
- name: stageTest
  displayName: Run Stage test
  type: boolean
  default: false

trigger:
  - none

variables:      # pipeline-level
  system.debug: true

stages:
- stage: Build
  jobs:
  - job: Build
    steps:
    - script: echo "hello to my first Build"
- stage: Test
  dependsOn:
    - Build
  jobs:
  - job: Test
    steps:
    - script: echo "test"
- ${{ if eq(parameters.stageTest, true) }}: 
  - stage: B1
    dependsOn: []
    jobs:
    - job: B1
      steps:
      - script: echo "B1"
  - stage: B2
    dependsOn:
    - B1
    jobs:
    - job: B2
      steps:
      - script: echo "B2"

参数为stageTest,可以在队列管道时设置该值(勾选或取消勾选)。

另一方面,您也可以在运行管道时跳过阶段:Skipping stages in a YAML pipeline


0
投票

恐怕目前无法在YAML管道中实现像发布管道UI那样的手动触发阶段。

目前,yaml 中提供了指定要运行的 stage 的功能,但这仅适用于手动触发的 pipeline,无法像发布 pipeline 那样随时部署手动 stage。

根据您的流程图,您希望您的管道从 CI 开始,并保持手动阶段的独立性,不会影响管道的运行。将阶段拆分为多个 yaml 管道不应该是您想要的,因此您可以关注 uservoice 并为这张票投票,以期待新功能的发布。


0
投票

您可以设置强制环境批准或添加带有

ManualValidation@0
任务的附加阶段,如下所示:

- stage: approval
  displayName: 'Approval'
  dependsOn: ci
  jobs:
  - deployment: approval
    displayName: Approve
    timeoutInMinutes: 4320 # job times out in 3 days
    pool: server # note: the value 'server' is a reserved keyword which indicates this is an agentless job
    environment:
      name: ProdSA
      resourceType: VirtualMachine
    strategy: 
      runOnce:
        deploy:
          steps:
          - task: ManualValidation@0
            inputs:
              instructions: 'Approval required'
            timeoutInMinutes: 1440 # task times out in 1 day

结果

此管道需要访问资源的权限,然后此运行才能继续批准

注 1: 如果您不指定

pool: server
,任务将无法工作,因此我无法将该任务包含在远程代理上执行的实际依赖阶段中。因此,在像我这样的设置中,您将需要一个单独的阶段来进行批准。

注2:您特别需要

ManualValidation@0
,而不是
ManualIntervention@8
任务。后来我遇到了奇怪的错误

注3:不要忘记为批准阶段之后的下一个阶段设置

dependsOn: approval

© www.soinside.com 2019 - 2024. All rights reserved.