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

参考

相关推荐
田里的水稻4 小时前
FA_数字相机成像原理、分级和分类
运维·数码相机·机器人·自动驾驶
沫儿笙6 小时前
焊接机器人氩气节省设备
人工智能·机器人
一颗小树x6 小时前
《VLA 系列》AMP 代码复现 | 强化训练 | 行走 跌倒 恢复
机器人·强化学习·amp·vla·复现
蜜桃味女焊匠人6 小时前
手工氩弧焊高耗气整改实战
人工智能·经验分享·其他·机器人
出门吃三碗饭7 小时前
如何从0到1构建自动化的咖啡和冰激凌机器人?
运维·机器人·自动化
灵途科技7 小时前
亮相WAIC 2026|灵途科技让机器人看得清、走得稳、抓得准
科技·机器人
会的东西有点杂19 小时前
ROS 2和ROS 1的比较
机器人
酉鬼女又兒20 小时前
零基础入门 DeepSeek V4 Pro API 开发:从环境搭建、消息格式规范到翻译函数实战、少样本提示、多轮对话聊天机器人与常见报错全流程详解指南
大数据·网络·数据库·人工智能·macos·机器人·github
小顿的企业观察1 天前
从人形机器人到AI销售智能体,AI正在重塑中企出海的底层逻辑
大数据·运维·人工智能·机器人·产品运营·制造
沫儿笙1 天前
安川弧焊机器人混合气动态调节技术
人工智能·机器人