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

Azure Pipeline:如何创建流水线间线性依赖并传递参数?

实现Azure Pipeline的依赖触发与参数传递

以下两种方案可以同时实现流水线的依赖触发和参数传递:

方案一:Pipeline资源+变量组传递参数

1. 配置第二个流水线的触发依赖

在第二个流水线的YAML中添加Pipeline资源,关联第一个流水线并启用自动触发:

resources:
  pipelines:
    - pipeline: FirstPipeline
      source: '第一个流水线的名称'
      project: '你的Azure DevOps项目名称'
      trigger:
        branches:
          include:
            - main # 按需指定触发的分支

配置后,第一个流水线在指定分支上完成运行时,会自动触发第二个流水线。

2. 第一个流水线将生成的ID存入变量组

在第一个流水线的作业中,添加任务将生成的ID写入预先创建好的变量组:

- task: AzureCLI@2
  inputs:
    azureSubscription: '你的Azure订阅连接'
    scriptType: 'bash'
    inlineScript: |
      # 替换为你的变量组ID、组织URL、项目名称和生成的ID变量
      az pipelines variable-group variable update --group-id 123 --name GeneratedID --value "$(YourGeneratedID)" --org https://dev.azure.com/your-org/ --project "your-project"

注意:需要给流水线的服务主体分配该变量组的编辑权限。

3. 第二个流水线读取变量组中的参数

在第二个流水线中引用目标变量组,直接使用存储的ID参数:

variables:
  - group: 你的变量组名称

steps:
  - script: echo "从第一个流水线接收的ID: $(GeneratedID)"

方案二:通过REST API触发并传递参数

1. 为第二个流水线定义可接收的参数

在第二个流水线的YAML开头声明参数,用于接收第一个流水线传入的ID:

parameters:
  - name: TargetID
    type: string
    displayName: '第一个流水线生成的ID'
    default: ''

steps:
  - script: echo "接收到的ID: ${{ parameters.TargetID }}"

2. 第一个流水线调用API触发第二个流水线并传参

在第一个流水线的最后一个作业中,添加PowerShell任务,调用Azure DevOps REST API触发第二个流水线,并携带生成的ID:

- task: PowerShell@2
  inputs:
    inlineScript: |
      $orgUrl = "https://dev.azure.com/your-org"
      $projectName = "your-project"
      $pipelineId = 456 # 替换为第二个流水线的ID
      $authToken = "$(System.AccessToken)"
      $base64Auth = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$authToken"))

      # 构造请求体,传递参数
      $requestBody = @{
        templateParameters = @{
          TargetID = "$(YourGeneratedID)" # 替换为第一个流水线生成的ID变量
        }
      } | ConvertTo-Json

      $apiUrl = "$orgUrl/$projectName/_apis/pipelines/$pipelineId/runs?api-version=7.1-preview.1"
      $response = Invoke-RestMethod -Uri $apiUrl -Method Post -Headers @{Authorization=("Basic {0}" -f $base64Auth)} -Body $requestBody -ContentType "application/json"
      Write-Host "已触发第二个流水线,运行ID: $($response.id)"

注意:需要给流水线的服务主体分配第二个流水线的排队构建权限。

方案对比

  • 方案一适合需要持久化参数、多个流水线共享参数的场景,参数存储在变量组中可重复使用。
  • 方案二更直接,参数实时传递,无需依赖外部存储,适合一次性传递的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 14:40:22