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

如何设置Azure Release Pipeline在Build指定Stage成功后触发

Release Pipeline指定Build核心Stage成功触发的可行方案

该需求可通过平台原生配置或自定义脚本实现,主流CI/CD平台的具体操作方式如下:

1. Azure DevOps 方案

  • 核心逻辑:使用阶段筛选器(Stage filter) 或核心Stage主动触发Release两种方式实现
  • 操作步骤:
    • 原生配置方式:进入Release Pipeline的「触发条件」配置页,找到关联的Build Pipeline触发规则,开启「阶段筛选器」功能,直接勾选你需要的核心初始Stage,设置为「该阶段成功时触发」即可,无需等待整个Build Pipeline运行完成。如果界面未找到该选项,建议将DevOps服务升级到最新Sprint版本
    • 主动触发方式:在Build Pipeline的核心Stage最后添加调用Release REST API的任务,示例代码如下:
    # 核心Stage末尾添加的PowerShell任务示例,占位符需替换为你的实际配置值
    $headers = @{
        Authorization = "Bearer $(System.AccessToken)"
        "Content-Type" = "application/json"
    }
    $body = @{
        definitionId = <Release Pipeline ID>
        resources = @{
            builds = @(
                @{
                    id = $(Build.BuildId)
                    definitionId = $(Build.DefinitionId)
                }
            )
        }
    } | ConvertTo-Json -Depth 10
    Invoke-RestMethod -Uri "https://dev.azure.com/<组织名>/<项目名>/_apis/release/releases?api-version=7.1-preview.8" -Method Post -Headers $headers -Body $body
    
    • 注意:需要给Build服务账号授予Release Pipeline的「创建发布」权限

2. GitLab CI/CD 方案

  • 核心逻辑:在核心Stage末尾配置下游Pipeline触发规则,直接调用Release Pipeline
  • 操作步骤:
    • 首先在Build Pipeline的核心Stage末尾添加触发Release的配置,写入.gitlab-ci.yml即可:
    trigger_release:
      stage: core_build_stage # 替换为你的核心Stage名称
      needs: ["<核心构建Job名称>"]
      trigger:
        project: <Release项目的路径>
        branch: main
      variables:
        UPSTREAM_STAGE: "core_build_success"
    
    • 同时在Release Pipeline的触发规则中添加对应判断:
    release_job:
      stage: deploy
      rules:
        - if: $CI_PIPELINE_SOURCE == "pipeline" && $UPSTREAM_STAGE == "core_build_success"
      # 后续添加你的发布逻辑即可
    

3. Jenkins 方案

  • 核心逻辑:核心Stage运行成功后直接调用下游Release任务
  • 操作步骤:在Build Pipeline的核心Stage末尾添加如下代码:
stage('触发Release任务') {
  when {
    expression { currentBuild.currentResult == 'SUCCESS' }
  }
  steps {
    build job: '<Release任务名称>', 
      parameters: [
        string(name: 'BUILD_ID', value: env.BUILD_ID),
        string(name: 'ARTIFACT_PATH', value: <构建产物路径>)
      ], 
      wait: false
  }
}

通用规避方案

如果你的CI/CD平台不支持上述配置,可通过以下方式快速解决:

  • 将Build Pipeline拆分为两个独立Pipeline:核心构建Pipeline + 附加验证Pipeline,Release直接关联核心构建Pipeline的成功事件即可
  • 将新增的非核心Stage设置为「允许失败」(即continue on error/allow_failure: true),附加Stage失败不会标记整个Build Pipeline为失败,不会影响Release触发

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 18:09:04