gitlab webhook推送通知到飞书群消息

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了gitlab webhook推送通知到飞书群消息相关的知识,希望对你有一定的参考价值。

参考技术A gitlab webhook推送通知到钉钉群功能完善,但是飞书目前主要支持merge消息,普通的仓库变更没有支持。因此我们需要飞书自定义机器人,以及自己的webserver来接收gitlab消息,解析后按照飞书要求的格式将消息推送给飞书自定义机器人。

https://github.com/xiaodongzhang1025/vendor_webhook_gitlab2feishu 

Jenkins+飞书机器人发送通知

参考技术A   1. 在飞书群中添加自定义机器人

在飞书群中添加自定义机器人

2. Python发送通知的脚本

在部署Jenkins的服务器上创建一个目录,名称随意,创建feizhutongzhi.py脚本文件,需要将你的webhook地址拷贝到脚本中的url中。

思路是找出jenkins的内置变量,将jenkins内置变量定义为python脚本系统变量(sys.argv[1]),运行脚本的时候将jenkins 几个变量按顺序穿给脚本输出。所有项目可以共用一个脚本

1. 邮件的配置变量

$GIT_BRANCH - build 的 Git 分支

$FILE,path="xxx" - xxx 为指定的文件,文件内容可以在邮件中显示。注意:xxx 是工作区目录的相对路径,不是绝对路径。

$JOB_DESCRIPTION - 显示项目描述。

$BUILD_NUMBER - 显示当前构建的编号。

$SVN_REVISION - 显示 svn 版本号。还支持 Subversion 插件出口的 SVN_REVISION_n 版本。

$CAUSE - 显示谁、通过什么渠道触发这次构建。

$CHANGES - 显示上一次构建之后的变化。

$BUILD_ID - 显示当前构建生成的ID。

$PROJECT_NAME - 显示项目的全名。

$PROJECT_DISPLAY_NAME - 显示项目的显示名称。

$ SCRIPT - 从一个脚本生成自定义消息内容。自定义脚本应该放在 "$JENKINS_HOME/email-templates"。当使用自定义脚本时会默认搜索 $JENKINS_HOME/email-templatesdirectory 目录。其他的目录将不会被搜索。

$JENKINS_URL - 显示 Jenkins 服务器的 url 地址(可以在系统配置页更改)。

$BUILD_LOG_MULTILINE_REGEX - 按正则表达式匹配并显示构建日志。

$BUILD_LOG - 显示最终构建日志。

$PROJECT_URL - 显示项目的URL地址。

$BUILD_STATUS - 显示当前构建的状态(失败、成功等等)。

$BUILD_URL - 显示当前构建的URL地址。

$CHANGES_SINCE_LAST_SUCCESS - 显示上一次成功构建之后的变化。

$CHANGES_SINCE_LAST_UNSTABLE - 显示显示上一次不稳固或者成功的构建之后的变化。

$ENV - 显示一个环境变量。

$FAILED_TESTS - 如果有失败的测试,显示这些失败的单元测试信息。

$PROJECT_URL - 显示项目的 URL。

$ JELLY_SCRIPT - 从一个Jelly脚本模板中自定义消息内容。有两种模板可供配置:HTML和TEXT。你可以在 $JENKINS_HOME/email-templates 下自定义替换它。当使用自动义模板时,”template”参数的名称不包含“.jelly”。

$TEST_COUNTS - 显示测试的数量。

#!/usr/bin/env python

#-*- encoding:utf-8 -*-

import sys

import requests

import time

JOB_URL = sys.argv[1]

JOB_NAME = sys.argv[2]

BUILD_NUMBER = sys.argv[3]

GIT_BRANCH= sys.argv[4]

currenttime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())

url = '你的webhook地址'

method = 'post'

headers =

    'Content-Type': 'application/json'



json =

    "msg_type": "interactive",

    "card":

        "config":

            "wide_screen_mode": True,

            "enable_forward": True

        ,

        "elements": [

            "tag": "div",

            "text":

                "content": "项目名称:" + JOB_NAME + "\n构建编号:第" + BUILD_NUMBER + "次构建\n运行时间:" + currenttime + "\n分支:" + GIT_BRANCH,

                "tag": "lark_md"

           

        ,

            "actions": [

                "tag": "button",

                "text":

                    "content": "查看报告",

                    "tag": "lark_md"

                ,

                "url": JOB_URL,

                "type": "default",

                "value":

            ],

            "tag": "action"

        ],

        "header":

            "title":

                "content": JOB_NAME + " 构建报告",

                "tag": "plain_text"

           

       

   



requests.request(method=method, url=url, headers=headers, json=json)

运行 Python 脚本语言需要一些环境,我使用Python3

 yum install python3 python3-devel python3-pip

python3 -m pip install requests

3. Jenkins项目中添加配置

在配置中的构建中 加上一行命令即可

python3 /var/lib/jenkins/feishuinfo/feishutongzhi.py $JOB_URL $JOB_NAME $BUILD_NUMBER $GIT_BRANCH

构建完成之后,飞书群中就能收到对应的消息:

点击“查看报告”可以跳转到Jenkins

以上是关于gitlab webhook推送通知到飞书群消息的主要内容,如果未能解决你的问题,请参考以下文章

Jenkins+飞书机器人发送通知

notify - 多平台通知sdk(钉钉飞书企业微信群机器人Server 酱息知BarkChanify)

无法发送 Android 消息应用程序的推送通知?

php 使用钉钉机器人推送消息

ESP 保姆级教程疯狂Node.js服务器篇 ——教室WiFi自动打卡考勤(飞书群信息+NodeJs)

可以阻止 GitLab Webhook 在 Jenkins 中触发构建吗