如何在Azure构建管道中创建并触发Azure发布,无需等待构建完成?
实现方案:在Azure构建管道中异步触发Azure发布
可以实现,无需拆分维护两条管道,核心是在构建流程中插入异步触发发布的任务,让发布与构建并行推进,部署完成后直接执行测试套件。具体操作如下:
核心逻辑:在构建管道中添加任务,通过Azure CLI或REST API触发发布管道,并设置为异步模式——即触发后立即返回,不等待发布完成,构建管道继续执行后续步骤的同时,发布管道启动部署,部署完成后直接运行测试。
具体步骤:
- 配置权限:确保项目的构建服务账号(Project Build Service)拥有目标发布管道的「编辑、触发」权限,以及对应部署环境的权限。
- 用Azure CLI异步触发发布:
在构建管道中添加Azure CLI任务,选择匹配的代理池,输入以下命令:
关键参数说明:az pipelines release create --definition-name "你的发布管道名称" --description "由构建[$(Build.BuildNumber)]触发" --is-draft false --wait false--wait false会让命令触发发布后立即返回,不阻塞构建流程,实现异步启动发布。 - 用REST API触发(更灵活):
若需要自定义更多参数,可添加PowerShell任务调用Azure DevOps REST API:
该调用默认异步执行,构建管道会继续推进,无需等待发布结果。$orgUrl = "$(System.CollectionUri)" $projectName = "$(System.TeamProject)" $releaseDefId = "你的发布管道ID" $pat = "$(System.AccessToken)" $headers = @{ "Authorization" = "Bearer $pat" "Content-Type" = "application/json" } $body = @{ definitionId = $releaseDefId description = "由构建[$(Build.BuildNumber)]触发" isDraft = $false } | ConvertTo-Json Invoke-RestMethod -Uri "$orgUrl/$projectName/_apis/release/releases?api-version=7.1-preview.8" -Method Post -Headers $headers -Body $body -SkipHttpErrorCheck
测试套件的执行:
在发布管道的部署完成阶段(比如测试环境部署成功后),直接添加测试任务(如VSTest、JUnit等)运行目标测试套件,实现部署后自动触发测试,无需额外维护测试管道。注意事项:
- 确保构建产物已发布到Artifact仓库,发布管道的Artifact源需关联当前构建(可设置为「特定构建」,引用
$(Build.BuildId)); - 若需追踪发布状态,可在构建管道后续任务中添加查询逻辑,但无需阻塞构建流程。
- 确保构建产物已发布到Artifact仓库,发布管道的Artifact源需关联当前构建(可设置为「特定构建」,引用
内容的提问来源于stack exchange,提问作者lokanath das
相关产品推荐
相关产品推荐

