【问题标题】:How to force complete the Azure Devops pipeline using CLI/API?如何使用 CLI/API 强制完成 Azure Devops 管道?
【发布时间】:2021-06-25 03:16:54
【问题描述】:

我们在 azure devops 管道中有 5 个阶段。在第 3 阶段,它将触发两个阶段(阶段 1 和阶段 2)。这里 stage1 将等待批准,但 stage2 将触发并自动完成。在这里,我们希望在管道到达 stage2 时完成管道。不会检查stage1的状态。

无论如何(CLI/API)我们可以强制完成管道吗?这样我就可以在 stage2 配置结束时将其添加为作业。

【问题讨论】:

    标签: azure-devops azure-pipelines azure-devops-rest-api azure-devops-pipelines


    【解决方案1】:

    您可以使用表达式,表达式最常见的用途是在条件中确定是否应运行作业或步骤。表达式可以使用 dependencies 上下文来引用以前的作业或阶段。

    使用dependencies 的这种形式来映射变量或检查阶段级别的条件。在此示例中,无论阶段 A 是成功还是跳过

    ,阶段 B 都会运行

    JSON

    "dependencies": {
      "<STAGE_NAME>" : {
        "result": "Succeeded|SucceededWithIssues|Skipped|Failed|Canceled",
        "outputs": {
            "jobName.stepName.variableName": "value"
        }
      },
      "...": {
        // another stage
      }
    }
    

    YAML

    stages:
    - stage: A
      condition: false
      jobs:
      - job: A1
        steps:
        - script: echo Job A1
    - stage: B
      condition: in(dependencies.A.result, 'Succeeded', 'SucceededWithIssues', 'Skipped')
      jobs:
      - job: B1
        steps:
        - script: echo Job B1
    
    

    注意:默认情况下,管道中的每个阶段都依赖于 YAML 文件中它之前的阶段。如果您需要引用一个不是紧接在当前阶段之前的阶段,您可以通过向该阶段添加一个 dependsOn 部分来覆盖此自动默认值

    可以参考stage to stage dependeciesAzure Dev Ops multi-stage YAML pipeline - Using previous stage status as variable

    【讨论】:

    猜你喜欢
    • 2020-02-06
    • 1970-01-01
    • 2022-10-25
    • 1970-01-01
    • 2020-11-29
    • 2023-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多