原始需求:将Gitlab的动态发送给企业微信群机器人
实现方法:使用腾讯云函数接收Gitlab消息,在转换后发送给企业微信群机器人
相关资料:
- Gitlab Event
- 企业微信群机器人配置说明
请注意:这里的 Gitlab event 版本为15.11。如果是其它版本,最好是切换版本查看。
环境要求:
- 腾讯云账号
- Gitlab 服务器(或项目)管理权限
- 企业微信群管理员(可创建群机器人)
三个文件:index.py 、transform_commit.py 、 config.json
目录:gitlab_event_json 是 Gitlab 事件向 webhook 提交的内容范例
范例文件的信息是不全的,要另外提取事件内容进行内容的分析与转换
腾讯云函数默认入口文件。
Gitlab 事件调用 webhook url (云函数的公网地址)后,相关事件信息传入到入口文件主函数的 event、content 中(两者为Python dict对象)
如果在新建腾讯云函数时,启用了日志功能,则如下代码会将 Gitlab 事件信息打印到日志中:
print("GitLab 事件信息: " + json.dumps(event))
在实际调试过程中,要根据打印的内容来做实际的代码编写。
现在的代码没有完成所有事件的处理。
将 Gitlab 事件信息转换成 企业微信群机器人能接受的信息并提交。
一个腾讯云函数用于多个 Git 项目、多个企业微信群机器人时,可以用此配置文件来定义相互之间的映射关系。
在企业微信群添加群机器人后,查看群机器人信息:
所有群机器人的 webhook 地址都类似于:
https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=wechat_robot_key
key 的值 wechat_robot_key 在后面的操作中需要配置到云函数的 config.json 的键值对中。
新建窗口,创建类型选择“从头开始”,其它内容不需要变更
如果需要在日志中打印运行结果,可选择开启日志服务
-
创建 transform_commit.py
在 src 目录下创建 transform_commit.py 文件,将项目同名文件内容拷贝过去 -
创建 config.json
在 src 目录下创建 config.json 文件,将项目同名文件内容拷贝过去 -
修改 config.json
使用工具,生成一个随机字符串,用来替代 gitlab_key_01, 同时用企业微信群机器人的 key 的值替换掉 wechat_robot_key_01
在前面,已经拿到了腾讯云函数的公网访问链接,以及生成了一个随机字符串 gitlab_key_01
现在将此二者拼接成 gitlab 需要使用的 webhook url ,类似如下形式:
https://444444444-xxxxxxxxxx-ad.scf.tencentcs.com/send?key=gitlab_key_01
类似前面的步骤:
- 拿到企业微信群机器人的 key ;
- 生成随机字串 ;
- 将两个值成对配置进 config.json
- 云函数URL与随机字串拼接生成 webhook url
- 用拼接的 webhook url 配置 gitlab 项目