You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取触发Azure pipelineFinal的pipelineA执行状态?

如何获取触发Azure Pipeline的上游Pipeline执行状态?

我有一个主Azure Pipeline(pipelineFinal),需要在pipelineA执行完成后触发。以下是两个Pipeline的YAML配置:

pipelineA 配置

trigger: none

jobs:
- job: BuildA
  displayName: "Build Pipeline A"
  pool:
    name: my-cidc-pool

  steps:
    - powershell: |
        Write-Host "Pipeline A executed successfully!"
      displayName: "Run Pipeline A"

pipelineFinal 配置

trigger: none
pr: none  # Ignore pull requests

resources:
  pipelines:
    - pipeline: pipelineA
      source: sample/pipelineA  # Name in Azure DevOps
      branch: develop
      trigger:
        branches:
          include:
          - develop


jobs:
- job: CheckAllPipelines
  displayName: "Check Pipeline Results and Commit"
  pool:
    name: my-cidc-pool
  steps:
  - task: PowerShell@2
    inputs:
      targetType: 'inline'
      script: |
        Write-Host "Waiting ....."
        Start-Sleep -Seconds 30 
    
  - powershell: |
      Write-Host "Pipeline A Result: $(resources.pipelineA.result)"

    displayName: "Commit Pipeline Status"

我尝试用$(resources.pipelineA.result)获取pipelineA的执行状态,但无法正常工作,请问有可行的解决方法?


解决方法

方法1:修正资源变量的引用格式

你现在的变量引用格式不对,Azure Pipeline里引用管道资源的执行状态,得用正确的层级格式:$(resources.pipeline.<pipeline-resource-name>.result)。

你的pipelineFinal里定义的管道资源名称是pipelineA,所以正确的写法应该是:

Write-Host "Pipeline A Result: $(resources.pipeline.pipelineA.result)"

这个变量会返回上游Pipeline的执行结果,常见的值有Succeeded、Failed、Canceled等。

方法2:通过Azure DevOps REST API获取(更可靠)

如果变量引用的方式不好用,或者你需要更详细的执行信息,可以调用Azure DevOps的REST API来查询pipelineA的状态。

在pipelineFinal的PowerShell步骤里加下面的脚本(记得把{OrganizationName}和{ProjectName}换成你自己的组织和项目名称):

$pipelineRunId = $(resources.pipeline.pipelineA.runID)
$orgName = "{OrganizationName}"
$projectName = "{ProjectName}"

# 用系统自带的访问令牌调用API
$headers = @{
    "Authorization" = "Bearer $env:SYSTEM_ACCESSTOKEN"
}

$url = "https://dev.azure.com/$orgName/$projectName/_apis/pipelines/runs/$pipelineRunId?api-version=7.1-preview.1"
$response = Invoke-RestMethod -Uri $url -Headers $headers -Method Get

Write-Host "Pipeline A Result: $($response.status)"
Write-Host "Pipeline A Detailed Status: $($response.result)"

另外,还要在pipelineFinal的作业里开启脚本访问系统令牌的权限,添加对应的配置:

jobs:
- job: CheckAllPipelines
  displayName: "Check Pipeline Results and Commit"
  pool:
    name: my-cidc-pool
  # 开启系统令牌访问权限
  variables:
    system.accesstoken: $(System.AccessToken)
  steps:
  # 你的原有步骤...

内容的提问来源于stack exchange,提问作者homan salimi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 07:05:58