如何将Azure Pipeline生成的.apk制品发送至Microsoft Teams频道?
Azure Pipelines 构建APK发布到Microsoft Teams频道配置方案
注意:Teams传入Webhook单条消息附件大小限制为1MB左右,APK体积普遍远大于该阈值,因此采用「发布管道制品+Teams消息卡片带下载入口」的方案稳定性最高,完全满足测试团队直接获取安装包的需求。
前置准备
- 打开目标Teams频道,点击右上角更多选项(三个点标识),选择「连接器」,搜索找到「传入Webhook」完成添加,给Webhook设置名称(比如Android构建通知),可自定义上传头像,创建完成后复制生成的Webhook URL备用。
- 确认现有Azure生成管道可正常编译输出.apk文件,明确APK在构建工作目录中的生成路径。
配置步骤
安全存储Webhook地址
进入Azure管道编辑页面,打开「变量」面板新建变量,变量名设置为TeamsWebhookUrl,值填入之前复制的Teams Webhook地址,勾选「将此值保密」选项后保存,避免Webhook地址明文泄露。添加制品发布任务
在管道的Android构建步骤之后,添加「发布构建制品」任务,将生成的APK发布到Azure Pipelines的容器存储中,YAML配置示例如下:- task: PublishBuildArtifacts@1 inputs: PathtoPublish: '$(Build.ArtifactStagingDirectory)/app-release.apk' # 替换为当前项目实际的APK生成路径 ArtifactName: 'Android_Test_APK' publishLocation: 'Container'如果使用可视化经典管道,直接在任务列表搜索「发布构建 artifacts」,按界面提示填写APK路径、制品名称即可。该任务执行后,会生成当前构建的固定制品访问地址,项目内有权限的成员可直接访问下载。
添加Teams消息发送任务
在制品发布任务之后,添加PowerShell执行任务,通过脚本构造Teams消息卡片并调用之前配置的Webhook发送消息,YAML配置示例如下:- task: PowerShell@2 inputs: targetType: 'inline' script: | $downloadUri = "$(System.TeamFoundationCollectionUri)$(System.TeamProject)/_build/results?buildId=$(Build.BuildId)&view=artifacts&pathAsName=false&type=publishedArtifacts" $cardContent = @{ "@type" = "MessageCard" "@context" = "schema.org/extensions" "summary" = "Android测试包构建完成" "themeColor" = "2EB886" "sections" = @( @{ "activityTitle" = "✅ 构建完成:$(Build.DefinitionName) #$(Build.BuildNumber)" "facts" = @( @{"name" = "构建分支"; "value" = "$(Build.SourceBranchName)"}, @{"name" = "提交备注"; "value" = "$(Build.SourceVersionMessage)"}, @{"name" = "触发人"; "value" = "$(Build.RequestedFor)"}, @{"name" = "构建时间"; "value" = "$(Build.BuildStartTime)"} ) "markdown" = $true } ) "potentialAction" = @( @{ "@type" = "OpenUri" "name" = "下载APK测试包" "targets" = @(@{"os" = "default"; "uri" = $downloadUri}) }, @{ "@type" = "OpenUri" "name" = "查看构建日志" "targets" = @(@{"os" = "default"; "uri" = "$(Build.BuildUri)"}) } ) } | ConvertTo-Json -Depth 10 Invoke-RestMethod -Uri $(TeamsWebhookUrl) -Method Post -Body $cardContent -ContentType 'application/json'可视化经典管道操作同理,添加PowerShell任务后选择「内联脚本」模式,把上述脚本内容粘贴到输入框即可。
效果验证与可选优化
- 手动触发一次管道构建,构建成功后目标Teams频道会收到结构化消息卡片,卡片上直接带APK下载按钮,测试人员点击即可跳转到制品页获取安装包,不需要手动翻找构建记录。
- 如果测试团队没有Azure DevOps项目权限,可以在项目设置中开启制品匿名访问,或者将APK上传到内部共享存储后,把公开下载链接替换到脚本里的
$downloadUri字段即可。 - 如果不需要自定义卡片样式,也可以直接在Teams频道添加「Azure Pipelines」连接器,绑定对应的生成管道后,开启构建成功通知,不需要手写脚本即可自动推送带制品入口的消息,缺点是卡片内容自定义程度较低。
内容的提问来源于stack exchange,提问作者Punit kumar
相关产品推荐
相关产品推荐

