如何将Azure Pipeline的文件或数据直接附加发送到Microsoft Teams频道
实现Azure Pipeline构件推送至MS Teams方案
- 配置Teams传入Webhook
打开目标Teams频道,进入「连接器」配置页,添加「传入Webhook」连接器,自定义连接器名称后点击创建,复制生成的Webhook地址,将该地址存入Azure DevOps管道的秘密变量中,避免明文泄露。 - 配置管道推送任务
在管道的构件生成、发布步骤完成后,添加内置的PowerShell或Bash任务即可实现推送,无需额外安装市场插件。如果仅需要推送构件下载入口,直接构造带下载地址的Teams消息卡片调用Webhook即可;如果需要推送构件作为附件,可先读取构件文件流,按照Teams Webhook附件格式拼接请求体后发送。 - 示例脚本(PowerShell代理适用)
# 引用提前配置在管道秘密变量中的Teams Webhook地址 $webhookUrl = "$(teamsWebhookUrl)" $artifactName = "你的构件名称" # 拼接Azure DevOps默认构件下载地址 $artifactDownloadUrl = "$(System.TeamFoundationCollectionUri)$(System.TeamProject)/_apis/build/builds/$(Build.BuildId)/artifacts?artifactName=$artifactName&%24format=zip" # 构造Teams消息卡片 $messageBody = @{ "@type" = "MessageCard" "@context" = "http://schema.org/extensions" "themeColor" = "0078D4" "summary" = "流水线构件已生成" "sections" = @( @{ "activityTitle" = "流水线 $(Build.DefinitionName) 构件已就绪" "text" = "构件名称:$artifactName`n构建ID:$(Build.BuildId)`n点击下方按钮下载构件" } ) "potentialAction" = @( @{ "@type" = "OpenUri" "name" = "下载构件" "targets" = @( @{ "os" = "default" "uri" = $artifactDownloadUrl } ) } ) } | ConvertTo-Json -Depth 10 # 发送请求到Teams Webhook Invoke-RestMethod -Uri $webhookUrl -Method Post -Body $messageBody -ContentType "application/json"
注意:如果构件访问权限为私有,仅拥有对应Azure DevOps项目权限的用户可点击链接下载构件;如需无权限限制的访问入口,可先将构件上传至公共存储位置后替换下载地址即可。
内容的提问来源于stack exchange,提问作者Sturla
相关产品推荐
相关产品推荐

