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

参考

相关推荐
修心光2 小时前
记录一次,jenkins打包异常问题
运维·jenkins
GlobalInfo3 小时前
管道检测机器人行业调查、市场规模、排名分析报告2026-2032
大数据·人工智能·机器人
FII工业富联科技服务4 小时前
多智能体如何进入制造现场?从业务协同到数字孪生验证
大数据·人工智能·算法·机器人·制造·数字孪生
后台模板学习4 小时前
GitHub Actions 与 Jenkins 在日志监
运维·github·jenkins
兜里只有三分钱~4 小时前
启元机器人 π0 与 GR00T N1 对比:VLA 模型的两条技术路线
机器人·微调·预训练·仿真·vla
兜里只有三分钱~4 小时前
从 URDF 到 SDK:开发者视角拆解启元 T1/Q1 机器人架构
机器人·sdk·仿真·ros2·urdf
科技新资讯4 小时前
展厅服务机器人推荐:企业展厅与科技馆怎么选
机器人
cakeism8255 小时前
2026 中国企业 DevOps 平台选型:从工具链到一体化平台的决策框架
运维·servlet·devops
GlobalInfo17 小时前
2026年全球机器人用超平执行器市场研究报告:市场规模达7.51亿美元,人形机器人商业化与轻量化运动控制需求推动行业增长
大数据·人工智能·数码相机·microsoft·机器人
m0_7196408718 小时前
2026年高校科研机构轮式双臂机器人二次开发平台搭建测评指南
经验分享·机器人