【Jenkins】+【飞书机器人】发送通知(带签名)【Linux】

⭐添加飞书自定义机器人


🎀设置飞书签名校验


  • 我这个设置了签名的,具体怎么设置签名可以查看飞书官方文档
    在这里插入图片描述

⭐安装python 环境


因为我们这里需要使用python语言发送消息,所以需要安装python环境

yum install python3 python3-devel python3-pip
# 请求工具
python3 -m pip install requests

🎀发送消息python脚本

#!/usr/bin/env python
# -*- encoding:utf-8 -*-

import sys

import requests

import time
import hashlib
import base64
import hmac
import calendar


def gen_sign(timestamp, secret):
    string_to_sign = '{}\n{}'.format(timestamp, secret)
    hmac_code = hmac.new(string_to_sign.encode("utf-8"), digestmod=hashlib.sha256).digest()

    # 对结果进行base64处理
    sign = base64.b64encode(hmac_code).decode('utf-8')

    return sign


JOB_URL = sys.argv[1]
JOB_NAME = sys.argv[2]
BUILD_NUMBER = sys.argv[3]
isFinish = "开始构建" if str(sys.argv[4]) == str(0) else "构建完成"
timestamp = str(calendar.timegm(time.gmtime()))
currenttime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
sign_key = '你的签名'
sgin = gen_sign(timestamp, sign_key)
url = '你的webhook 地址'
method = 'post'
headers = {
    'Content-Type': 'application/json'
}
json = {
    "timestamp": "" + timestamp + "",
    "msg_type": "interactive",
    "sign": "" + sgin + "",
    "card": {
        "config": {
            "wide_screen_mode": True,
            "enable_forward": True
        },
        "elements": [{
            "tag": "div",
            "text": {
                "content": "项目名称:" + JOB_NAME + "\n构建编号:第" + BUILD_NUMBER + "次构建\n运行时间:" + currenttime,
                "tag": "lark_md"
            }
        }, {
            "actions": [{
                "tag": "button",
                "text": {
                    "content": "查看报告",
                    "tag": "lark_md"
                },
                "url": JOB_URL,
                "type": "default",
                "value": {}
            }],
            "tag": "action"
        }],
        "header": {
            "title": {
                "content": JOB_NAME + " "+isFinish+"",
                "tag": "plain_text"
            }
        }
    }
}
requests.request(method=method, url=url, headers=headers, json=json)

🎀把脚本上传倒linux上


在这里插入图片描述
可以看到上传去是没有执行权限的,一定要记得叫上执行权限

  • chmod +x sendMsg.py

🎀jenkins 上执行脚本


  • 最后一个参数标识 0 开始构建 1 构建完成
    /opt/java/script/sendMsg.py这一段不要跟着我写 根据自己存放的位置和名字来
python3 /opt/java/script/sendMsg.py $JOB_URL $JOB_NAME $BUILD_NUMBER 0

在这里插入图片描述
在这里插入图片描述

⭐步骤总结

  • 在Linux环境下使用Jenkins来构建和部署项目,并通过飞书机器人发送通知的步骤如下:
    1. 安装和配置Jenkins:首先,需要在Linux服务器上安装和配置Jenkins。可以按照Jenkins官方文档提供的步骤进行安装,并确保Jenkins服务器正常运行。
    2. 创建Jenkins任务:使用Jenkins的Web界面创建一个新的任务或者选择现有的任务。任务可以是一个构建或部署项目的作业。
    3. 配置构建步骤:在任务的配置页面上,配置构建步骤,例如从代码仓库拉取代码、编译项目、运行测试等。根据项目的需求和具体操作,可以添加一系列构建步骤。
    4. 安装和配置飞书机器人插件:在Jenkins的插件管理页面中,搜索并安装飞书机器人插件。安装完成后,在全局配置页面中,配置飞书机器人的Webhook URL,这将用于发送通知消息到飞书。
    5. 添加Post-build Actions:在任务的配置页面上,找到“Post-build Actions”部分,选择“Send notification to Feishu”选项。在该选项中,填写消息的标题、内容等信息,可以使用Jenkins的环境变量来动态地生成通知内容。
    6. 保存并触发构建:完成所有配置后,保存任务的设置。然后,手动触发构建,或者设置定时触发构建等方式启动任务。
    7. 查看飞书通知:一旦Jenkins任务完成构建,飞书机器人将根据配置的Webhook URL发送通知消息。在飞书中登陆相应的机器人账号,即可查看接收到的通知信息。
  • 通过上述步骤,你可以在Linux环境下使用Jenkins进行项目构建和部署,并通过飞书机器人实现通知功能。这样可以及时了解项目构建的状态或者其他相关信息,提高开发和运维的效率。
### 配置Jenkins在构建失败时向飞书发送通知 为了实现这一目标,可以按照如下方法操作: #### 安装必要的插件 确保已安装`Environment Injector Plugin`和`Description Setter Plugin`这两个插件[^3]。 #### 创建Python脚本用于发送消息飞书机器人 在部署Jenkins的服务器上建立一个新的目录并在此目录下创建名为`feizhutongzhi.py`的Python脚本文件。此脚本需包含能够调用Feishu Webhook API的功能来发送消息,并且应该设置好Webhook URL以便连接到指定的飞书群组或个人聊天机器人[^4]。 ```python import requests import json def send_message(webhook_url, message): headers = {'Content-Type': 'application/json'} data = { "msg_type": "text", "content": {"text": f"Build failed: {message}"} } response = requests.post(url=webhook_url, headers=headers, data=json.dumps(data)) if response.status_code != 200: raise Exception(f"Failed to send notification with status code {response.status_code}") if __name__ == "__main__": webhook_url = "<your_webhook_here>" build_status = "This is a test failure message from Jenkins." try: send_message(webhook_url, build_status) except Exception as e: print(e) ``` #### 修改Jenkins Job配置以触发失败后的动作 进入具体的Job项目页面,在“Post-build Actions”部分添加执行Shell命令的动作,当构建状态为失败(`Failure`)时运行上述编写的Python脚本来发送通知飞书。这可以通过条件判断语句或者直接利用Jenkins内置的状态检测机制完成。 对于更复杂的场景,比如想要根据不同类型的错误采取不同的响应措施,则可以在编写shell script的时候加入逻辑处理;也可以考虑使用Pipeline作为替代方案,它提供了更加灵活的方式来进行此类定制化工作流的设计。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值