【Jenkins】如何使用 telegram 的机器人进行 jenkins 任务告警

author: jwensh & gpt

date: 2024.10.08

要使用 Telegram 机器人发送 Jenkins 任务告警,步骤可以分为以下几个部分:创建 Telegram 机器人、配置 Jenkins 插件或者使用自定义脚本,将 Jenkins 任务的状态通过 Telegram 机器人通知给你。具体流程如下:

1. 创建 Telegram 机器人

1.1 与 BotFather 创建机器人
  1. 打开 Telegram,搜索 BotFather,这个是 Telegram 官方的机器人创建和管理工具。

  2. 向 BotFather 发送 /start,然后发送 /newbot 创建新机器人。

  3. 按照 BotFather 的指示,设置机器人的名称和用户名。完成后,BotFather 会生成一个 Token,这是后续连接机器人所需要的。

    • 例如,BotFather 会提供类似 123456789:ABCDEF1234567890abcdef1234567890 这样的 Token。请记录这个 Token。
1.2 获取你的 Telegram 用户 ID
  1. 打开 Telegram,搜索 userinfobotIDBot
  2. 向该机器人发送 /start,它会返回你的用户 ID,格式类似 123456789

2. Jenkins 中配置 Telegram 通知

2.1 使用 Jenkins 插件

Jenkins 提供了专门的插件,可以方便地集成 Telegram 机器人来发送通知。

1. 安装 Jenkins 的 Telegram Notification 插件
  1. 在 Jenkins 主界面,点击 Manage Jenkins(管理 Jenkins)。
  2. 点击 Manage Plugins(插件管理)。
  3. 选择 Available 选项卡,搜索 Telegram Notifications 插件,安装该插件。
2. 配置 Telegram 插件
  1. 安装完成后,回到 Jenkins 主界面,点击 Manage Jenkins
  2. 点击 Configure System
  3. 滚动页面,找到 Telegram Notifier 配置部分。
  4. Bot Token 中输入之前从 BotFather 获得的 Token。
  5. Chat ID 中输入你从 userinfobot 获得的用户 ID。
3. 配置 Jenkins Job 的通知
  1. 进入你想要配置告警的 Jenkins Job。
  2. 点击 Configure
  3. Post-build Actions 部分,点击 Add post-build action ,选择 Telegram Notifications
  4. 配置什么时候发送通知,比如 on failure (任务失败时通知)或 on success(任务成功时通知)。

你可以自定义消息内容,也可以保持默认配置。

2.2 使用自定义脚本(Shell + Python)

如果你不想使用插件,可以使用一个简单的脚本来通过 Telegram 发送 Jenkins 任务告警。你可以在 Jenkins 中配置这个脚本,在任务执行结束后,自动发送告警。

1. 编写 Python 脚本

创建一个 Python 脚本,用于发送消息到 Telegram。

python 复制代码
import requests

def send_telegram_message(token, chat_id, message):
    url = f"https://api.telegram.org/bot{token}/sendMessage"
    payload = {
        "chat_id": chat_id,
        "text": message,
        "parse_mode": "HTML"
    }
    response = requests.post(url, data=payload)
    if response.status_code == 200:
        print("Message sent successfully")
    else:
        print(f"Failed to send message: {response.status_code}, {response.text}")

if __name__ == "__main__":
    # 在这里填写你的 Bot Token 和 Chat ID
    bot_token = "123456789:ABCDEF1234567890abcdef1234567890"
    chat_id = "123456789"
    
    # Jenkins 通知消息
    message = "Jenkins 任务状态告警: 构建成功/失败"
    
    send_telegram_message(bot_token, chat_id, message)
2. Jenkins 中调用 Python 脚本
  1. 将上面的脚本保存为 send_telegram_alert.py
  2. 在 Jenkins Job 中的 Post-build Actions ,选择 Execute shell,添加以下内容:
bash 复制代码
python3 /path/to/send_telegram_alert.py

其中,/path/to/send_telegram_alert.py 是你刚刚保存 Python 脚本的完整路径。

3. 动态发送告警

你可以根据构建结果动态修改发送的消息。比如,使用环境变量来判断构建状态:

bash 复制代码
if [ "$BUILD_STATUS" == "SUCCESS" ]; then
    python3 /path/to/send_telegram_alert.py "Build successful"
else
    python3 /path/to/send_telegram_alert.py "Build failed"
fi

3. 总结

你可以通过以下两种方式将 Jenkins 任务的状态发送到 Telegram:

  1. 使用插件:安装 Telegram Notifications 插件,配置 Bot Token 和 Chat ID,然后在每个 Job 中设置通知条件,非常方便。
  2. 使用脚本:通过 Python 脚本结合 Jenkins Shell,灵活定制通知的内容和条件。

参考

相关推荐
赫尔·普莱蒂科萨·帕塔1 天前
智能体工程
人工智能·机器人·软件工程·agi
China_Yanhy1 天前
入职 Web3 运维日记 · 第 8 日:黑暗森林 —— 对抗 MEV 机器人的“三明治攻击”
运维·机器人·web3
RobotNow1 天前
优秀的机器人厂商集中平台哪家服务全面
机器人
vx_Biye_Design1 天前
【关注可免费领取源码】房屋出租系统的设计与实现--毕设附源码40805
java·spring boot·spring·spring cloud·servlet·eclipse·课程设计
晚霞的不甘1 天前
CANN × ROS 2:为智能机器人打造实时 AI 推理底座
人工智能·神经网络·架构·机器人·开源
RobotNow1 天前
优秀的机器人厂商集中平台哪家案例多
机器人
RobotNow1 天前
优秀的机器人厂商集中平台哪家效率高
机器人
搬砖者(视觉算法工程师)1 天前
工具科普介绍之Spherasim:无人机与机器人开发领域的工具
机器人·无人机
人间打气筒(Ada)1 天前
jenkins基于Pipeline发布项目
java·pipeline·jenkins·流水线·ci·cd·cicd
vx_Biye_Design1 天前
基于Spring Boot+vue的湖北旅游景点门票预约平台的设计--毕设附源码29593
java·vue.js·spring boot·spring cloud·servlet·eclipse·课程设计