Jenkins自动发送飞书消息

前言

公司办公软件用的是飞书套壳,本文主要介绍如何通过飞书机器人发送Jenkins构建的进度和消息。

方法

前置条件

  1. 创建一个飞书机器人
  2. 搭建好Jenkins
  3. 创建好构建任务

过程

  1. 根据飞书开发者平台的接口文档,用shell脚本封装一套调用飞书机器人发送消息接口的函数。
  2. 在需要的时候调用即可

Code

这里贴一下代码,如果需要自己使用的话请修改你的app_idapp_secret

#!/bin/bash
###
 # @Author: qile [email protected]
 # @Date: 2023-07-27 15:03:41
 # @LastEditors: qile [email protected]
 # @LastEditTime: 2023-08-17 11:05:49
 # @FilePath: /linux_build_system/test.sh
 # @Description: 通过飞书机器人发送消息
### 

# 获取飞书 token
function get_feishu_token() {
    url='https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal'
    headers='Content-Type: application/json; charset=utf-8'
    payload='{"app_id": "cli_a226XXXXXXXXXXXX", "app_secret": "xXgQ4GmjEJx7BXXXXXXXXXXXXXXXXXXXXXX"}'

    response=$(curl -s -X POST -H "$headers" -d "$payload" $url)
    status_code=$(echo $response | jq -r '.code')
    if [ $status_code -eq 0 ]; then
        token=$(echo $response | jq -r '.tenant_access_token')
        echo $token
    else
        msg=$(echo $response | jq -r '.msg')
        echo "获取 token 失败: $msg"
        exit 1
    fi
}

# 获取用户 ID
function get_user_id() {
    url='https://open.feishu.cn/open-apis/contact/v3/users/batch_get_id?user_id_type=open_id'
    token=$1
    headers='Content-Type: application/json; charset=utf-8'
    headers2="Authorization: Bearer $token"
    payload="{\"emails\": [\"$2\"]}"
    # echo $payload
    response=$(curl -s -X POST -H "$headers" -H "$headers2" -d "$payload" $url)

    status_code=$(echo $response | jq -r '.code')
    if [ $status_code -eq 0 ]; then
        user_id=$(echo $response | jq -r '.data.user_list[0].user_id')
        echo $user_id
    else
        msg=$(echo $response | jq -r '.msg')
        echo "获取用户ID失败: $msg"
        exit 1
    fi
}

# 发送消息
function send_message() {
    url='https://open.feishu.cn/open-apis/im/v1/messages?receive_id_type=open_id'
    token=$1
    headers='Content-Type: application/json; charset=utf-8'
    headers2="Authorization: Bearer $token"
    echo $2
    response=$(curl -s -X POST -H "$headers" -H "$headers2" -d "$2" $url)
    status_code=$(echo $response | jq -r '.code')
    if [ $status_code -eq 0 ]; then
        echo "消息发送成功"
    else
        msg=$(echo $response | jq -r '.msg')
        echo "消息发送失败: $msg"
        exit 1
    fi
}




# 使用方法如下:
# 1. 获取飞书 token
token=$(get_feishu_token)
echo $token
# 2. 获取用户 ID
userId=$(get_user_id $token qil.ref@haier.com)
echo $userId
# 3. 发送消息
payload="{\"msg_type\":\"text\",\"receive_id\":\"$userId\",\"content\":\"{\\\"text\\\":\\\"您提交的构建已完成[点击下载](https://www.baidu.com)\\\"}\"}"
send_message $token $payload

总结

本文给出了详细的shell脚本代码,实现了将Jenkins构建消息发送到飞书的功能。欢迎白嫖!!!

你可能感兴趣的:(jenkins,飞书,servlet)