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

如何将Azure发布管道自动化结果导出至Teams并优化通知频次?

解决Azure发布管道Teams通知过多的方案

方案1:自定义PowerShell脚本发送汇总通知

在发布管道的最后一个阶段添加PowerShell任务(设置为Always run,确保无论前面阶段成败都执行),通过Azure DevOps API获取所有阶段状态,整理成简洁的Markdown消息后发送到Teams Webhook。

示例脚本:

# 获取当前发布的详细信息
$releaseId = $env:RELEASE_RELEASEID
$apiUri = "$($env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI)$($env:SYSTEM_TEAMPROJECTID)/_apis/release/releases/$releaseId?api-version=7.1-preview.8"
$releaseData = Invoke-RestMethod -Uri $apiUri -Headers @{Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"}

# 格式化各阶段状态
$stageStatusList = $releaseData.environments | ForEach-Object {
    $statusEmoji = switch ($_.status) {
        "succeeded" { "✅" }
        "failed" { "❌" }
        "partiallySucceeded" { "⚠️" }
        default { "🔄" }
    }
    "- **$($_.name)** : $statusEmoji $($_.status)"
}

# 构造Teams消息内容
$teamsMessage = @"
### 发布管道结果汇总
**管道名称**: $($releaseData.name)
**发布版本**: $($releaseData.releaseName)
---
#### 各阶段状态:
$($stageStatusList -join "`n")
"@

# 发送到Teams Webhook
$webhookUrl = "你的Teams传入Webhook地址"
Invoke-RestMethod -Uri $webhookUrl -Method Post -Body (ConvertTo-Json @{text = $teamsMessage}) -ContentType "application/json"

注意:需要在PowerShell任务的"附加选项"中勾选允许脚本访问OAuth令牌,确保脚本能调用Azure DevOps API。

方案2:调整Azure Pipelines插件的通知规则

直接禁用插件的细粒度通知,只保留发布完成后的汇总通知:

  • 在Teams的Azure Pipelines插件设置中,关闭"阶段完成"、"任务失败"等细分通知项,仅开启"发布完成"通知
  • 进入Azure DevOps发布管道的编辑页面,点击右上角... → 选择通知 → 添加新通知,触发条件设为"发布完成",通知类型选Teams,自定义消息模板,加入各阶段状态的变量(比如$(Release.Environments[0].Status)等)

方案3:合并管道或使用父管道统一通知

如果Web和移动端管道逻辑关联,可以:

  • 将两个管道整合为一个多阶段发布管道,Web和移动端测试作为两个并行阶段,最后加一个汇总通知阶段
  • 或者设置父管道触发Web、移动端两个子管道,父管道在所有子管道完成后,发送包含两个子管道状态的汇总通知

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 20:21:19