【问题标题】:Azure DevOps API run single stage from multistage pipelineAzure DevOps API 从多阶段管道运行单阶段
【发布时间】:2021-03-25 23:04:27
【问题描述】:

我的情况是,我有多个管道,输出将是一个完整的解决方案。因此,我将使用 Azure DevOps REST API 从“母”管道触发这些管道。我成功地将管道排队并运行它。但是这个管道是多阶段的(DTAP)。

我只想运行一个阶段。有谁知道我应该看哪里或应该做什么?

【问题讨论】:

  • 你检查过以下回复吗?它们有帮助吗?

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


【解决方案1】:

目前这是不可能的。请查看此主题-How to use ADO REST APIs to run one stage in a multi-stage YAML pipeline?

目前没有这样的 API 来触发多阶段 YAML 管道中的特定阶段。

不过,现在可以使用 az pipelines 命令从命令行管理基于 YAML 的多阶段管道。例如,您可以从 CLI 以交互方式设置和管理管道,或者使用脚本自动执行整个设置,但似乎仍然无法触发特定阶段。

您有一个功能请求 - REST APIs to trigger a specific stage in multi-stage YAML pipeine

【讨论】:

    【解决方案2】:

    没有直接触发特定阶段的方法,但您可以使用条件装饰每个阶段。您可以在排队时将参数(变量值)传递给管道(也可以通过 API)。

    通过添加和设置变量,您可以控制条件,从而控制运行哪个阶段。

    但请注意依赖关系,您所依赖的任何阶段当然也必须运行。

    【讨论】:

      【解决方案3】:

      同意@jessehouwing。您可以指定每个阶段运行的条件。默认情况下,如果一个阶段不依赖于任何其他阶段,或者它所依赖的所有阶段都已完成并成功,则它会运行。您可以通过强制某个阶段运行(即使前一个阶段失败)或指定自定义条件来自定义此行为。

      检查以下使用custom condition的示例:

      stages:
      - stage: A
      
      - stage: B
        condition: and(succeeded(), eq(variables['build.sourceBranch'], 'refs/heads/master'))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-03-18
        • 1970-01-01
        • 2020-12-03
        • 2020-05-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多