软件开发团队经常会遇到关于GitLab消息的问题,很多都是邮件通知,但是目前的通信协同工具显然都已经转移到了微信,钉钉,飞书等及时沟通软件,因此本文记录一下使用PHP实现微信机器人发送GitLab的消息的过程。

  首先我们要拥有一台服务器,然后在服务器上面搭建起能够运行PHP的环境,这里我使用的是搭建WordPress的平台,Apache+MySQL+PHP。

  然后我们建立PHP运行环境的根目录下建立一个目录,比如test,在test目录下创建一个index.php文件,如下:

<?phpheader('Content-Type:text/html;charset=utf-8');$url = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=机器人的key';$cont = "今天是星期五,你交周报了吗?";text($url,$cont,array("@all")); //测试发送机器人消息githook(); //执行gitlab的hook程序die('process abort'); //杀死function githook(){echo('start:');$key = $_GET['key']; //获取输入参数key$urlPro = $_GET['pro']; //获取输入参数项目名称$post_data = file_get_contents("php://input"); //获取gitlab的json消息$post_data_std_class = json_decode($post_data);$curl = curl_init();if ($post_data_std_class->object_kind == "merge_request") {if ($post_data_std_class->object_attributes->target_branch != "master") {return;}}else if ($post_data_std_class->object_kind == "push") //Push的消息应该同步到微信{$user_name = $post_data_std_class->user_name;$res_name = $post_data_std_class->project->name;$res_web = $post_data_std_class->project->web_url;$branch = $post_data_std_class->project->default_branch;$message = $post_data_std_class->commits[0]->message;if($urlPro == $res_name){ //项目对的上才发送消息到微信gitout_md($key,'code push message',array(""),$user_name,$res_name,$res_web,$branch,$message);}}}//文本调试用function debugout($info,$robot){$url = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key='.$robot;$cont = $info;text($url,$cont,array(""));}//发送文本function text($url,$cont,$list){$data = array("msgtype"=>"text","text"=>array("content"=>$cont,"mentioned_list"=>$list));$res = request_post($url, json_encode($data,'320'),'json');print_r($res);}//发送markdown//robot=机器人key//cont = 消息主题//list = @成员列表//提交人//提交项目//提交地址//提交内容function gitout_md($robot,$info,$list,$name,$project,$web,$branch,$message){$url = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key='.$robot;$content = $info;$content .= " \n>Name : **".$name."**";$content .= " \n>Prj : [".$project."](".$web.")";$content .= ":<font color=\"warning\">".$branch."</font>";$content .= " \n>Msg : <font color=\"info\">".$message."</font>";$data = array("msgtype"=>"markdown","markdown"=>array("content"=>$content,"mentioned_list"=>array("")));$res = request_post($url, json_encode($data,'320'),'json');print_r($res);}/*** 模拟get进行url请求* @param string $url* @return json*/function httpGet($url) {$curl = curl_init();curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);curl_setopt($curl, CURLOPT_TIMEOUT, 500);curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);curl_setopt($curl, CURLOPT_URL, $url);$res = curl_exec($curl);curl_close($curl);return $res;}/*** 模拟post进行url请求* @param string $url* @param array $post_data* @param string $dataType* @return bool|mixed*/function request_post($url = '', $post_data = array(),$dataType='') {if (empty($url) || empty($post_data)) {return false;}$curlPost = $post_data;$ch = curl_init($url);curl_setopt($ch, CURLOPT_HEADER, 0);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);if($dataType=='json'){curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded;charset=UTF-8','Content-Length: ' . strlen($curlPost)));}curl_setopt($ch, CURLOPT_POST, 1);curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);$data = curl_exec($ch);return $data;}?>

  之后我们就可以通过访问Http://loalhost/test/index.php来执行这个php代码,但是我们需要带入两个参数。因此我们转到GitLab中进行设置。

  在GitLab的System hooks中设置URL,格式为Http://localhost/test/index.php?key=机器人key&pro=仓库名称。之后选择需要提醒的event即可,同时也可以在下面直接测试。

  我们看一下提示效果:点击标注处的项目名称还可以直接连接到项目网页。

原文链接:http://www.mo-yin.com/572.html 利用企业微信机器人发送GitLab消息

利用企业微信机器人发送GitLab消息相关推荐

  1. 企业微信机器人脚本python_python实现企业微信定时发送文本消息的示例代码

    企业微信定时发送文本消息 使用工具:企业微信机器人+python可执行文件+计算机管理中的任务计划程序 第一步:创建群机器人 选择群聊,单击鼠标右键,添加群机器人. 建立群机器人后,右键查看机器人,如 ...

  2. PowerShell 实现企业微信机器人推送消息

    前言企业微信机器人 在ARMS告警管理中创建企业微信机器人后,您可以在通知策略中指定对应的企业微信群用于接收告警.当通知策略的匹配规则被触发时,系统会自动向您指定的企业微信群发送告警通知.企业微信群收 ...

  3. 企业微信发送应用消息php,企业微信如何发送应用消息?及时发布重要通知

    很多企业以前向员工发布通知的时候,要么是通过开会的方式传达,要么是通过文档的方式来通知员工.可是这样效率低,而且结果往往通知不到位.故此,现在很多企业开始使用企业微信发送应用消息来发布内部的重要通知. ...

  4. 企业微信机器人发送文件 php demo

    企业微信机器人发送文件 php demo php实现企业微信机器人发送文件 php实现企业微信机器人发送文件 下载链接:企业微信机器人发送文件 php demo 如下图所示: 代码如下:

  5. python企业微信机器人发送文件

    python企业微信机器人发送文件 import requests#传入文件 def post_file(id_url,wx_url,file):data = {'file': open(file,' ...

  6. 封装Python脚本:使用企业微信机器人发送消息至企业微信

    官方文档地址:https://developer.work.weixin.qq.com/document/path/91770#%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8 ...

  7. 企业微信机器人发送消息

    背景:之前用钉钉机器人可以发送消息,可以将线上的告警通知发送到消息群中,后来企业微信也支持在群组中增加机器人了,钉钉和企业微信机器人的使用很相似,都是使用webhook的方式来进行实现的,话不多说,咱 ...

  8. java对接企业微信机器人发送消息

    [Java]企业微信机器人自动发送群消息 先在群里添加机器人,然后获取机器人的webhook地址: 假设webhook是:https://qyapi.weixin.qq.com/cgi-bin/web ...

  9. 企业微信加密消息体_企业微信机器人怎么发消息?企业微信机器人可以定时发消息吗?...

    企业微信外部群自带群机器人功能,可以协助员工高效管理社群,帮助我们运营客户,那么企业微信机器人怎么用呢? 使用企业微信机器人,需要管理员先进入企业微信管理后台,在[客户联系]-[效率工具]-[自动回复 ...

  10. python使用企业微信机器人发送测试报告

    自从企业微信添加了群机器人功能,我们现在使用机器人发送测试报告,最开始使用的是文本类型,但是感觉没有markdown的显示好看,索性就更换成了markdown类型的 官网上介绍的还可以发送图片和图文等 ...

最新文章

  1. Linux网络那点事(CentOS、Ubuntu、Kali)
  2. 汇编: 在代码中安排自己定义的数据,栈空间
  3. Use Standard Controllers
  4. 05 Linux快速安装 Oracle11g
  5. 《剑指offer》最小的k个数
  6. 在本地计算机无法启动windows audio,win10系统无法启动windowsaudio服务的操作步骤
  7. CCNA课堂练习:OSPF的介绍及配置
  8. 一周学会HTML----Day03常用标签(下)
  9. 聊聊人工智能领域的工作状态?知乎回答
  10. python3.X出现关于模块(i18n)的不能使用的解决方法
  11. java synchronized atomic_atomic 包、synchronized | Java 中线程安全
  12. 前端工程师提高工作效率的几个小技巧
  13. 《机器学习算法竞赛实战》学习笔记1.竞赛简介
  14. ftp java 关闭连接超时_关于FTP连接超时的解决办法
  15. 图解机器学习chapter01
  16. 设置和取消Word文档打开密码的三种方法
  17. 有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中——C语言
  18. gb2312简繁转换js兼容各种浏览器
  19. 安装Centos 7系统
  20. 转载的--------------------HTTP协议中的短轮询、长轮询、长连接和短连接

热门文章

  1. 怎么用服务器多开手机系统版本,云服务器安卓多开
  2. HTTP 多处理模块(MPM)
  3. android 音频子系统框架(一)
  4. 费氏数列 中第n项数值的计算并打印
  5. elementUI实现表格序号自增
  6. 在北京税前工资2万元,扣掉社保五险和一金税后能拿多少钱?
  7. 数字孪生北京故宫,元宇宙推进旅游业进程
  8. mysql开发技巧笔记
  9. TCP—为什么是AIMD?
  10. r语言 rgl 强制过程中_R语言正则表达式:提取括号中的内容