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

如何在Azure DevOps中针对Pull Request批准/拒绝状态发送邮件通知

在Azure DevOps中配置PR批准/拒绝邮件通知的方法

一、使用内置通知设置(快速配置,适合个人/团队)

个人通知配置

  1. 登录Azure DevOps项目,点击右上角个人头像 → 通知
  2. 在通知页面点击 新建订阅
  3. 选择「拉取请求」类别下的 拉取请求已批准 或 拉取请求已拒绝 事件
  4. 设置过滤条件:可指定特定仓库、分支,或仅针对自己创建的PR、自己作为审核者的PR等
  5. 通知方式选择 电子邮件,填写接收邮箱后保存配置

团队通知配置

  1. 进入项目的 项目设置 → 团队,选中目标团队
  2. 点击团队页面的 通知,后续步骤和个人配置一致:选择对应PR事件,设置条件后指定团队成员邮箱或内部分发组

二、用Pipeline实现自定义内容通知(灵活定制邮件内容)

如果需要包含PR链接、审核意见、代码变更摘要等定制化内容,可通过Azure Pipeline实现:

  1. 创建触发类型为「拉取请求」的Pipeline,触发条件设为PR状态变为已批准/已拒绝
  2. 在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)
    
  3. 保存Pipeline后,测试PR批准/拒绝流程,验证定制化邮件是否正常发送

三、注意事项

  • 内置通知配置简单,但邮件内容为固定格式,无法自定义
  • Pipeline方式需确保拥有调用Azure DevOps API的权限,且SMTP服务器配置符合企业要求
  • 企业环境建议使用团队分发组统一接收通知,避免遗漏

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 20:48:14