【问题标题】:ado yaml: Is it possible to select which stage's jobs execute on a per run basis?ado yaml:是否可以在每次运行的基础上选择执行哪个阶段的作业?
【发布时间】:2021-09-16 21:54:01
【问题描述】:

我正在将我们的一个发布管道从 ADO 经典版移植到 YAML。

classic 和 YAML 都不允许您在创建运行时选择作业/任务。

至少在经典版本中,一旦创建版本,您可以在触发阶段之前禁用该特定版本的阶段作业/任务。

但是,在 YAML 中,在运行创建屏幕上只能选择阶段。但是在运行开始后,我找不到像在经典中那样禁用任务和/或作业的方法。

奇怪的是,在 YAML 阶段运行后,有一个“重新运行失败的作业”选项。

所以我的问题是,是否可以在创建新的 YAML 管道运行时(或在创建之后但在触发阶段之前)启用/禁用作业和/或任务?

【问题讨论】:

    标签: azure-devops azure-pipelines azure-pipelines-yaml


    【解决方案1】:

    创建管道后,恐怕没有现有的选项可以在触发之前取消一个信号阶段。

    对于解决方法,您可以创建 Pipeline environment 并添加 Approval check。然后你就可以在你的舞台中使用环境了。

    在这种情况下,在运行此阶段之前,您可以通过拒绝批准来停止此阶段的运行。

    在创建新的 YAML 管道运行时启用/禁用作业和/或任务

    要达到这个要求,你可以在 Yaml Pipeline 中使用If ExpressionRuntime Parameters

    这是一个例子:

    parameters:
      - name: test1
        type: string
        default: false
        values:
          - true
          - false
    
    pool:
      vmImage: ubuntu-latest
    
    stages:
     
      - stage: testA
        jobs:
        - ${{ if eq(parameters['test1'], 'true' ) }}:
          - job: test1
            steps:
               - script: echo 1
        - job: test2
          steps:
            - script: echo 1
         
      - stage: testB
        jobs:
          - job: test3
            steps:
              - script: echo 1
        
    

    运行管道时,您可以选择运行作业/任务的值。

    【讨论】:

    • 谢谢!是的,我已经在利用 env 批准作为解决方法。不幸的是,这会为每个需要批准的环境触发一封警报电子邮件。而且由于没有手动触发阶段的方法,我已经在使用批准作为解决多个阶段的方法。是的,这些警报可以在 Outlook 中过滤,但这会惹恼人们并且不是一个可靠的解决方案。我确实找到了允许手动触发阶段/作业的功能请求。它有足够的支持,主持人说他们正在将此功能添加到队列中。希望这很快就会到来。
    猜你喜欢
    • 2017-01-31
    • 1970-01-01
    • 2020-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-23
    相关资源
    最近更新 更多