【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,灵活定制通知的内容和条件。

参考

相关推荐
m0_7482475525 分钟前
重学SpringBoot3-整合 Elasticsearch 8.x (二)使用Repository
大数据·elasticsearch·jenkins
果壳中的robot1 小时前
【ORB-SLAM3】鲁棒核函数的阈值设置
算法·计算机视觉·机器人
Rhys..2 小时前
如何在Jenkins上查看Junit报告
servlet·junit·jenkins
m0_748244833 小时前
(CICD)自动化构建打包、部署(Jenkins + maven+ gitlab+tomcat)
自动化·jenkins·maven
m0_748256345 小时前
重学SpringBoot3-整合 Elasticsearch 8.x (一)客户端方式
大数据·elasticsearch·jenkins
LS_learner16 小时前
小智机器人CMakeLists编译文件解析
嵌入式硬件·机器人
国货崛起16 小时前
波兰发布世界首个双足肌肉骨骼机器人,细节高度模拟人类生物特征
机器人
IT观察16 小时前
优艾智合获批广东省复合协作机器人工程技术研究中心
机器人
shichaog16 小时前
腿足机器人之十一- 深度强化学习
机器人
chenbin52016 小时前
Jenkins 自动构建Job
运维·jenkins