企业通信工具审核gitlab合并请求
1、国内主流企业即时通讯企业微信腾讯出品和微信互通聊天、审批、打卡、会议、客户联系客户朋友圈、应用接入支持私有化部署。适合绝大多数国内大中小微企业客户运营场景优势明显。钉钉阿里强 OA 工作流审批、考勤、钉盘、钉会议、宜搭低代码功能重管理。制造业、传统企业、行政流程多的企业使用广泛。飞书字节跳动文档深度集成会议、多维表格、知识库适合知识型团队、互联网、研发团队。本文主要讲解用户可以通过 REST API 或钉钉机器人消息触发 MR 的批准、拒绝、关闭以及创建 Tag 等操作。2、流程图研发人员提出合并请求url将合并请求发给审核者。审核者通过钉钉发送同意合并url即可合并程功。3、实现代码依赖dependency groupIdorg.gitlab4j/groupId artifactIdgitlab4j-api/artifactId version${gitlab4j-api.version}/version /dependency dependency groupIdcom.dingtalk.open/groupId artifactIddingtalk-stream/artifactId version${dingtalk-stream.version}/version /dependency应用配置application.yamlaudit: gitlab: base-url: http://127.0.0.1:8090 # GitLab 服务器地址 token: glpat-xxxxxxxxxxxx # GitLab Personal Access Token ding: talk: robot: client-id: dingxxxxxxxxxxxx # 钉钉机器人 ClientID client-secret: xxxxxxxxxxxxxxxx # 钉钉机器人 ClientSecret钉钉监听核心代码/** * 启动 Stream 客户端监听机器人回调消息 */ PostConstruct public void start() { if (!properties.isEnabled()) { log.info(钉钉机器人 Stream 监听已禁用 (dingtalk.robot.enabledfalse)); return; } streamThread new Thread(this::doStartStreamClient, dingtalk-robot-stream); // 设置为守护线程避免应用退出时 Stream 客户端未正常关闭 streamThread.setDaemon(true); streamThread.start(); log.info(钉钉机器人 Stream 客户端已启动, topic{}, properties.getTopic()); } /** * 启动 Stream 客户端监听机器人回调消息 */ private void doStartStreamClient() { try { streamClient OpenDingTalkStreamClientBuilder .custom() .credential(new AuthClientCredential(properties.getClientId(), properties.getClientSecret())) .registerCallbackListener(properties.getTopic(), (ChatbotMessage message) - { //1、 处理消息开发者根据自身业务需求处理机器人回调 String result handleMessage(message); //2、回复消息 reply(message, result); return new JSONObject(); }) .build(); // start() 为阻塞方法需在独立线程中执行 streamClient.start(); } catch (Exception e) { log.error(钉钉机器人 Stream 客户端异常, e); } } /** * 处理消息 * * param message 收到消息 * methodName: handleMessage * return: java.lang.String * author: ybw * date: 2026/7/28 **/ private String handleMessage(ChatbotMessage message) { //1、 获取钉钉消息内容 String content message.getText().getContent(); //2、判断是否有同意合并关键字 if (!content.contains(同意合并)) { //2.1 不包含 return 没有同意合并关键字; } //2.2 包含 //2.2.1 获取合并链接地址 String mergeRequestUrl MyStrUtil.getMergeRequestUrl(content); log.info(合并请求地址{}, mergeRequestUrl); if (StrUtil.isBlank(mergeRequestUrl)) { return 无合并请求链接地址; } //2.2.2 发送合并请求 ApproveByUrlRequest request new ApproveByUrlRequest(mergeRequestUrl); AuditResult auditResult auditService.approveMrByUrl(request); return auditResult.getMessage(); } /** * 回复消息 * * param message 收到消息 * param result 处理结果 * methodName: reply * return: void * author: ybw * date: 2026/7/28 **/ private void reply(ChatbotMessage message, String result) { try { //1、 使用 sessionWebhook 回复消息 String sessionWebhook message.getSessionWebhook(); if (StrUtil.isBlank(sessionWebhook)) { return; } //2、回复消息使用 sessionWebhook 回复消息 BotReplier replier new BotReplier(sessionWebhook); replier.replyText(处理结果 result); log.info(已通过 sessionWebhook 回复消息); } catch (Exception e) { log.error(reply error, e); } } /** * 停止 Stream 客户端 */ PreDestroy public void stop() { if (streamClient ! null) { try { streamClient.stop(); log.info(钉钉机器人 Stream 客户端已关闭); } catch (Exception e) { log.error(关闭 Stream 客户端失败, e); } } if (streamThread ! null streamThread.isAlive()) { streamThread.interrupt(); } }审核核心代码/** * 通过 MR 链接地址批准 MR */ public AuditResult approveMrByUrl(ApproveByUrlRequest request) { // 1. 解析 URL提取项目路径和 MR IID GitLabApiClient.MrUrlInfo urlInfo gitLabApiClient.parseMrUrl(request.getMrUrl()); log.info(解析 MR URL: projectPath{}, mrIid{}, urlInfo.projectPath(), urlInfo.mrIid()); // 2. 将项目路径解析为项目 ID Long projectId gitLabApiClient.resolveProjectId(urlInfo.projectPath()); // 3. 委托给现有的 approveMr 逻辑 ApproveRequest approveRequest new ApproveRequest(); approveRequest.setProjectId(projectId); approveRequest.setMrIid(urlInfo.mrIid()); return approveMr(approveRequest); }4、使用钉钉用户发送同意合并http://172.168.0.2/test/git-audit/-/merge_requests/1钉钉返回消息处理结果MR 已批准并合并。

相关新闻

破局传统商务拓展困局:Sifted Network 以 AI 智能体解决企业全球化增长六大核心痛点

破局传统商务拓展困局:Sifted Network 以 AI 智能体解决企业全球化增长六大核心痛点

在存量竞争加剧、全球化渠道碎片化的商业环境下,无论是外贸工厂、品牌方、科技初创企业还是服务商,传统商务拓展(BD)模式早已暴露系统性短板:线下展会重金投入却线索稀薄、业务员海量人工筛选客户效率低下、海外社媒商…

2026/8/10 9:21:07 阅读更多 →
Claude Opus 5:从提示词到游戏 AI,生成成本趋近零但评估难,个性化体验待突破

Claude Opus 5:从提示词到游戏 AI,生成成本趋近零但评估难,个性化体验待突破

Claude Opus 5:从提示词到游戏 AI,生成易但评估难,个性化游戏体验仍待突破 一份提示词烧 6.9 亿 token 花费 423 美元后,Vyom 得到自带物理引擎的赛艇游戏 Wave Racer。该游戏基于 Three.js 构建,有细胞着色渲染风格&a…

2026/8/10 9:21:07 阅读更多 →
AI+蓝牙RSSI信号定位:从原理到实践,实现近场设备查找

AI+蓝牙RSSI信号定位:从原理到实践,实现近场设备查找

你的手机又找不到了吗?在沙发缝里、枕头底下,或者干脆忘在了会议室?对于现代人来说,“手机去哪儿了”的焦虑,几乎和电量焦虑一样普遍。传统的解决方案无非是打电话、用智能手表查找,或者依赖“查找我的iPho…

2026/8/10 9:21:06 阅读更多 →

最新新闻

从戏剧化设定到可信叙事:如何构建“篡改志愿”故事的人物与情节

从戏剧化设定到可信叙事:如何构建“篡改志愿”故事的人物与情节

1. 先搞清楚这个标题到底在讲什么:一个关于“志愿篡改”的叙事内核 看到这个标题,第一反应可能觉得这是个猎奇故事,或者是个技术教程。但仔细拆解,它的核心其实是一个 高度戏剧化的叙事设定 ,而非一个真实的技术操作…

2026/8/10 10:15:32 阅读更多 →
Unity Linux中文输入法兼容性解决方案:应用层内置输入法实现

Unity Linux中文输入法兼容性解决方案:应用层内置输入法实现

1. 项目概述:当Unity在Linux下“失语” 如果你是一名在Linux环境下使用Unity引擎进行开发的创作者,尤其是需要处理中文文本输入的游戏或应用开发者,那么你很可能已经踩过这个“坑”:在Unity编辑器或运行时构建的程序中&#xff0…

2026/8/10 10:15:32 阅读更多 →
基于SpringBoot+Vue的农业病虫害防治系统开发实践

基于SpringBoot+Vue的农业病虫害防治系统开发实践

1. 项目概述:作物病虫害防治科普系统的技术架构与价值 这个毕业设计选题瞄准了农业信息化领域的实际需求痛点——如何让病虫害防治知识更便捷地触达一线农户。系统采用前后端分离架构,后端基于SpringBoot构建RESTful API服务,前端使用Vue.js实…

2026/8/10 10:15:32 阅读更多 →
工业通讯基础:RS232、RS485、RJ45与Modbus协议核心区别与应用解析

工业通讯基础:RS232、RS485、RJ45与Modbus协议核心区别与应用解析

在工业自动化、智能楼宇、数据采集等项目中,我们经常会遇到 RS485、RS232、RJ45 和 Modbus 这几个名词。对于刚接触的新手来说,它们常常混在一起,分不清谁是谁,甚至误以为它们是同一种东西。比如,有人会问:…

2026/8/10 10:15:32 阅读更多 →
XXE 漏洞深度实战:XML 外部实体攻击与 OOB 带外

XXE 漏洞深度实战:XML 外部实体攻击与 OOB 带外

XML 如今不像十年前那样到处当主数据格式,可它从没真正离开:办公文档、SOAP、SAML、一大堆企业集成、支付回调、日志采集、老 RPC、安全产品自己的规则文件……只要服务端还在“把用户可控的 XML 喂给解析器”,XXE(XML External E…

2026/8/10 10:15:32 阅读更多 →
基于图神经网络(GCN)的环法自行车赛表现预测实战指南

基于图神经网络(GCN)的环法自行车赛表现预测实战指南

最近在分析体育赛事数据时,发现一个有趣的现象:环法自行车赛的顶尖车手,其表现数据(如功率、速度)与车队、赛段、装备等因素之间存在着复杂的、非线性的关联。传统的统计方法难以捕捉这种深层关系,而图神经…

2026/8/10 10:14:31 阅读更多 →

日新闻

GraphQL-CSS API全解析:useGqlCSS、GqlCSS组件与getStyles实用指南

GraphQL-CSS API全解析:useGqlCSS、GqlCSS组件与getStyles实用指南

GraphQL-CSS API全解析:useGqlCSS、GqlCSS组件与getStyles实用指南 【免费下载链接】graphql-css A blazing fast CSS-in-GQL™ library. 项目地址: https://gitcode.com/gh_mirrors/gr/graphql-css GraphQL-CSS是一个基于GraphQL的CSS-in-GQL™库&#xff0…

2026/8/10 0:00:02 阅读更多 →
告别语言障碍:KISS Translator 双语翻译插件终极指南

告别语言障碍:KISS Translator 双语翻译插件终极指南

告别语言障碍:KISS Translator 双语翻译插件终极指南 【免费下载链接】kiss-translator A simple, open source bilingual translation extension & Greasemonkey script (一个简约、开源的 双语对照翻译扩展 & 油猴脚本) 项目地址: https://gitcode.com/…

2026/8/10 0:00:02 阅读更多 →
BepInEx配置管理器:游戏插件配置的终极可视化解决方案

BepInEx配置管理器:游戏插件配置的终极可视化解决方案

BepInEx配置管理器:游戏插件配置的终极可视化解决方案 【免费下载链接】BepInEx.ConfigurationManager Plugin configuration manager for BepInEx 项目地址: https://gitcode.com/gh_mirrors/be/BepInEx.ConfigurationManager 你是否曾经因为游戏插件的复杂…

2026/8/10 0:00:02 阅读更多 →

周新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/10 1:05:29 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/10 1:05:29 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身,而应重视模型外的系统搭建,即Harness。提出AgentModelHarness的实用公式,详细介绍Harness的四个层次:持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/10 1:05:29 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/9 17:05:02 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/10 1:05:29 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/9 17:05:02 阅读更多 →