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

参考

相关推荐
鸭梨山大。2 小时前
Jenkins安全部署规范及安全基线
安全·中间件·jenkins
夜幕龙3 小时前
iDP3复现代码数据预处理全流程(二)——vis_dataset.py
人工智能·python·机器人
鸭梨山大。3 小时前
Jenkins 任意文件读取(CVE-2024-23897)修复及复现
安全·中间件·jenkins
两张不够花3 小时前
Jenkins 持续集成部署
运维·jenkins
望获linux6 小时前
赋能新一代工业机器人-望获实时linux在工业机器人领域应用案例
linux·运维·服务器·机器人·操作系统·嵌入式操作系统·工业控制
ai_lian_shuo8 小时前
四、使用langchain搭建RAG:金融问答机器人--构建web应用,问答链,带记忆功能
python·ai·金融·langchain·机器人
青木沐12 小时前
Jenkins介绍
运维·jenkins
我爱C编程15 小时前
基于Qlearning强化学习的机器人路线规划matlab仿真
matlab·机器人·强化学习·路线规划·qlearning·机器人路线规划
野蛮的大西瓜16 小时前
开源呼叫中心中,如何将ASR与IVR菜单结合,实现动态的IVR交互
人工智能·机器人·自动化·音视频·信息与通信
只会copy的搬运工17 小时前
Jenkins 持续集成部署——Jenkins实战与运维(1)
运维·ci/cd·jenkins