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

如何在Azure DevOps流水线部署完成后发送包含已完成任务的邮件?

Azure DevOps Staging 环境部署通知邮件实现方案

你提到的对比PR创建时间与最近一次部署时间的思路是完全可行的,同时也可以借助Azure DevOps(以下简称ADO)原生的关联能力实现,无需自行处理时间比对逻辑,两种方案的实现方法如下:

方案一:使用ADO原生关联能力(推荐,无需自定义时间逻辑)

ADO默认会自动关联每次构建、部署对应的PR和工作项,直接使用内置能力即可快速实现需求:

  • 首先确保你的代码提交、PR都按照规则关联了对应工作项,ADO会自动把本次部署范围内的所有PR、关联工作项绑定到部署记录中。
  • 部署到Staging环境的阶段末尾,新增邮件发送任务:
    • 如果是经典图形界面流水线,直接添加内置的Send Email任务,内置模板已支持直接插入预定义变量获取PR、工作项信息。
    • 如果是YAML流水线,可使用内置的SendEmail@1任务,或者自行调用SMTP服务发送邮件。
  • 可直接使用的预定义变量包括:
    • $(Build.SourceVersionMessage):本次触发部署的PR合并说明/提交说明
    • $(Release.ReleaseDescription):发布记录描述,PR触发的发布默认会携带PR标题内容
    • 如果需要完整的本次部署关联PR列表、任务列表,可在脚本中调用ADO接口拉取:
      $(System.TeamFoundationCollectionUri)$(System.TeamProject)/_apis/build/builds/$(Build.BuildId)/workitems?api-version=7.1-preview.3
  • 拼接好PR标题、新增任务内容后,配置好收件人即可完成发送。

方案二:自行比对时间实现(适合需要高度自定义的场景)

你最初的思路可按以下步骤落地:

  • 部署阶段开始时,先调用ADO发布接口拉取Staging环境最近一次成功部署的时间,接口格式:
    $(System.TeamFoundationCollectionUri)$(System.TeamProject)/_apis/release/deployments?definitionId=$(Release.DefinitionId)&definitionEnvironmentId=$(Release.DefinitionEnvironmentId)&deploymentStatus=succeeded&$top=1&api-version=7.1-preview.2
  • 调用PR列表接口,筛选出创建时间大于上一次部署时间、状态为已完成的PR,同时拉取这些PR关联的工作项信息。
  • 将筛选出的PR标题、关联任务内容拼接为邮件正文,发送即可。

注意事项

  • 需要给流水线的服务账号开通发布读取、工作项读取权限,否则调用API时会出现权限不足错误。
  • 若不需要自定义邮件格式,也可以直接在项目设置的通知页面,新增「部署到Staging环境成功」的通知规则,默认通知模板已经包含关联PR、工作项内容,调整模板格式后即可直接使用,无需编写代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 05:24:03