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

如何创建警报系统汇总多仓库未合并MR至指定渠道并统一查看?

多仓库合并请求统一监控与告警方案

一、统一查看指定多仓库的待处理合并请求

GitHub 场景

  • 全局搜索快速查询:直接在GitHub搜索栏输入筛选语法,跨仓库查看待处理PR:
    • 查看组织下所有仓库:is:pr is:open user:<你的组织名>
    • 指定多个仓库:repo:org/repo1 repo:org/repo2 is:pr is:open
      搜索结果支持排序、筛选作者/标签等,可保存为书签方便快速访问。
  • 自定义项目仪表板:创建GitHub Project,添加筛选规则is:pr is:open,自动同步符合条件的PR,还能按仓库、优先级分组整理,直观展示全局待处理状态。
  • 命令行批量查询:使用GitHub CLI(gh)批量拉取数据,适合本地处理场景:
    gh pr list --repo org/repo1 --repo org/repo2 --state open --format "table"
    

GitLab 场景

  • 全局/群组级查看:
    • 跨指定仓库搜索:在GitLab搜索栏输入merge_requests state:opened project:<org/repo1> project:<org/repo2>
    • 同群组仓库:直接进入群组的「合并请求」页面,默认展示群组内所有项目的待处理MR,支持按状态、更新时间筛选。
  • 命令行批量查询:使用GitLab CLI(glab)批量获取:
    glab mr list --project org/repo1 --project org/repo2 --state opened --format "table"
    

二、新/未合并MR的告警推送(Slack/邮件/群组)

GitHub 实现方案

定时汇总告警(GitHub Actions)

编写Workflow定时拉取指定仓库的未合并PR,推送到Slack或邮件。示例配置:

name: PR 监控与告警
on:
  schedule:
    - cron: '0 9 * * 1-5' # 工作日早9点推送
  workflow_dispatch: # 支持手动触发

jobs:
  send_alert:
    runs-on: ubuntu-latest
    steps:
      - name: 安装GitHub CLI
        run: sudo apt install gh -y
      - name: 获取待处理PR列表
        id: pr_data
        env:
          GH_TOKEN: ${{ secrets.GH_TOKEN }}
        run: |
          PR_LIST=$(gh pr list --repo org/repo1 --repo org/repo2 --state open --json title,url,author,updatedAt \
            --jq '.[] | "- \(.author.login) 提交于 \(.updatedAt[:10]): [\(.title)](\(.url))"' | paste -sd "\n" -)
          echo "pr_list=$PR_LIST" >> $GITHUB_OUTPUT
      - name: 推送到Slack
        uses: slackapi/slack-github-action@v1
        with:
          slack-message: |
            🚨 今日待处理合并请求汇总:
            ${{ steps.pr_data.outputs.pr_list }}
        env:
          SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
  • 配置说明:在仓库「Settings > Secrets and variables > Actions」中添加GH_TOKEN(需repo权限)和SLACK_WEBHOOK_URL。
  • 邮件推送替代:可替换Slack步骤为邮件动作,比如使用actions/send-mail,配置SMTP信息发送到指定邮箱群组。

新MR实时告警

在每个目标仓库配置「Pull Request」Webhook,触发事件选择「Opened」,直接将新PR通知推送到Slack/邮件(可使用GitHub自带的Slack集成模板快速配置)。

GitLab 实现方案

定时汇总告警(GitLab CI/CD)

编写定时Pipeline批量拉取MR数据并推送:

pr_monitor_alert:
  schedule:
    - cron: '0 9 * * 1-5' # 工作日早9点执行
  script:
    - |
      # 安装GitLab CLI
      curl -s https://raw.githubusercontent.com/profclems/glab/trunk/scripts/install.sh | sudo bash
      # 获取待处理MR列表
      MR_LIST=$(glab mr list --project org/repo1 --project org/repo2 --state opened --format "detail" | grep -E "(Title|Author|URL)" | paste -sd "\n" -)
      # 推送到Slack
      curl -X POST -H "Content-type: application/json" \
        --data "{\"text\":\"🚨 今日待处理合并请求汇总:\n$MR_LIST\"}" \
        $SLACK_WEBHOOK_URL
  variables:
    SLACK_WEBHOOK_URL: $SLACK_WEBHOOK_URL # 在项目CI/CD变量中配置
  tags:
    - docker

新MR实时告警

  • 单个仓库:进入仓库「Settings > Webhooks」,添加Webhook,触发事件选择「Merge requests events」,勾选「Opened」,配置Slack/邮件接收地址。
  • 群组级:若仓库都在同一群组,可配置群组级Webhook,一次性覆盖所有子项目的MR事件通知。

注意事项

  • 权限配置:确保使用的Token(GitHub/GitLab)拥有目标仓库的读取权限,避免查询失败。
  • 定制化调整:可根据需求修改告警频率、筛选规则(比如只提醒超过24小时未处理的MR)、通知格式。
  • 邮件推送细节:使用邮件推送时,需确保SMTP服务配置正确,避免被标记为垃圾邮件。

内容的提问来源于stack exchange,提问作者Hussain Akhtar Wahid 'Ghouri'

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 17:15:36