如何在Azure DevOps中针对Pull Request批准/拒绝状态发送邮件通知
在Azure DevOps中配置PR批准/拒绝邮件通知的方法
一、使用内置通知设置(快速配置,适合个人/团队)
个人通知配置
- 登录Azure DevOps项目,点击右上角个人头像 → 通知
- 在通知页面点击 新建订阅
- 选择「拉取请求」类别下的 拉取请求已批准 或 拉取请求已拒绝 事件
- 设置过滤条件:可指定特定仓库、分支,或仅针对自己创建的PR、自己作为审核者的PR等
- 通知方式选择 电子邮件,填写接收邮箱后保存配置
团队通知配置
- 进入项目的 项目设置 → 团队,选中目标团队
- 点击团队页面的 通知,后续步骤和个人配置一致:选择对应PR事件,设置条件后指定团队成员邮箱或内部分发组
二、用Pipeline实现自定义内容通知(灵活定制邮件内容)
如果需要包含PR链接、审核意见、代码变更摘要等定制化内容,可通过Azure Pipeline实现:
- 创建触发类型为「拉取请求」的Pipeline,触发条件设为PR状态变为已批准/已拒绝
- 在YAML中添加PowerShell脚本,调用Azure DevOps API获取PR详情并发送邮件,示例代码如下:
trigger: none pr: branches: include: - main types: - closed steps: - task: PowerShell@2 inputs: targetType: 'inline' script: | # 获取PR核心信息 $prId = $(System.PullRequest.PullRequestId) $orgUrl = "$(System.CollectionUri)" $project = "$(System.TeamProject)" $token = "$(System.AccessToken)" $headers = @{ Authorization = "Bearer $token" } $prDetails = Invoke-RestMethod -Uri "$orgUrl/$project/_apis/git/pullrequests/$prId?api-version=7.1-preview.1" -Headers $headers -Method Get # 解析状态与审核内容 $reviewStatus = if ($prDetails.status -eq 'completed' -and $prDetails.mergeStatus -eq 'succeeded') { "已批准" } else { "已拒绝" } $prUrl = $prDetails.url.Replace("_apis/git/pullrequests", "pullrequest") $reviewerComments = $prDetails.reviewers | Where-Object { $_.vote -ne 0 } | ForEach-Object { "$($_.displayName): $($_.comments[-1].content)" } # 构造HTML邮件内容 $emailBody = @" <h3>拉取请求状态更新</h3> <p>PR标题: $($prDetails.title)</p> <p>当前状态: $reviewStatus</p> <p>PR链接: <a href="$prUrl">$prUrl</a></p> <p>审核意见:</p> <ul> $(foreach ($comment in $reviewerComments) { "<li>$comment</li>" }) </ul> "@ # 发送邮件(替换为企业SMTP配置) Send-MailMessage -From "devops-notify@your-domain.com" -To "team-members@your-domain.com" ` -Subject "PR $($prDetails.title) 已$reviewStatus" -Body $emailBody -BodyAsHtml ` -SmtpServer "smtp.your-domain.com" -Port 587 -UseSsl -Credential (Get-Credential) env: System.AccessToken: $(System.AccessToken) - 保存Pipeline后,测试PR批准/拒绝流程,验证定制化邮件是否正常发送
三、注意事项
- 内置通知配置简单,但邮件内容为固定格式,无法自定义
- Pipeline方式需确保拥有调用Azure DevOps API的权限,且SMTP服务器配置符合企业要求
- 企业环境建议使用团队分发组统一接收通知,避免遗漏
内容的提问来源于stack exchange,提问作者sai
相关产品推荐
相关产品推荐

