Jenkinser — Jenkins 自动部署工具
通过 Jenkins REST API 完成自动部署:指定项目、环境、分支即可触发构建并跟踪结果。
触发条件
- 用户提到"部署"、"deploy"、"发布"、"上线"
- 用户提到"Jenkins"、"构建"、"触发构建"
- 用户提供了项目名+环境+分支要求部署
前置条件
- Python 3.8+ 已安装
requests库已安装(pip install requests)- 已配置 Jenkins 凭据
首次配置
如果用户提到部署相关操作但尚未配置凭据,引导运行:
python <skill-dir>/scripts/setup.py
交互式输入 Jenkins URL、用户名、API Token,自动保存到 config.json 并验证连通性。
工具位置
<skill-dir>/scripts/jenkinser.py
核心功能:部署
当用户说"部署 xxx 项目到 xxx 环境,分支 xxx"时:
python <skill-dir>/scripts/jenkinser.py deploy --project <项目名> --env <环境名> --branch <分支>
参数说明:
--project— 项目名称(模糊匹配 Jenkins Job 名称)--env— 环境名称(如 prod、uat、sit)--branch— 部署分支--log-lines— 构建日志显示行数(默认 50)
执行流程:
- 确认用户提供了项目名、环境名和分支
- 如果缺少项目名:运行
python <skill-dir>/scripts/jenkinser.py jobs列出 Jobs 供选择 - 如果缺少环境名:询问用户确认环境
- 如果缺少分支:询问用户确认分支
- 如果缺少项目名:运行
- 运行
python <skill-dir>/scripts/jenkinser.py deploy --project <name> --env <env> --branch <branch> - 展示部署结果(成功/失败 + 日志)
Job 自动匹配:
- 从 Jenkins 获取所有 Jobs
- 按 project + env 关键词模糊匹配 Job 名称(不区分大小写)
- 匹配到 0 个 → 提示用
jobs命令查看 - 匹配到多个 → 列出候选列表让用户确认
- 匹配到 1 个 → 直接使用
示例:
- "部署 AIR 项目到 prod,分支 bugfix/xxx" →
python <skill-dir>/scripts/jenkinser.py deploy --project AIR --env prod --branch bugfix/xxx - "uat 环境部署 api-service,用 feature-123 分支" →
python <skill-dir>/scripts/jenkinser.py deploy --project api-service --env uat --branch feature-123
列出可用 Jobs
当用户问"有哪些 Jenkins Job"、"列出构建任务"时:
python <skill-dir>/scripts/jenkinser.py jobs [--filter <keyword>]
查询构建状态
当用户问"xxx 项目的构建状态"、"构建到哪了"时:
python <skill-dir>/scripts/jenkinser.py status --job <job_name> [--build <number>]
查看构建日志
当用户问"构建日志"、"构建报错了看看日志"时:
python <skill-dir>/scripts/jenkinser.py log --job <job_name> [--build <number>] [--lines N]
与其他 Skill 的协作
- maycur-ai-code-manager:阶段 ④ push 代码后,可调用 jenkinser 完成部署验证
- opser:先用 opser 确认项目在目标环境的当前分支,再用 jenkinser 部署新分支
- 建议串联:"opser 确认分支 → 代码推送 → jenkinser 部署"
通用交互规则
- 首次使用:先检查 config.json 和 SDK 可用性,不可用则提示运行 setup.py
- 部署确认:触发部署前向用户展示匹配到的 Job 名称、目标分支,用户确认后执行
- 禁止自主扩大范围:部署失败时不得自主重试,必须先向用户说明情况
- 敏感信息:日志中可能包含敏感信息,展示时注意脱敏
注意事项
- 内网 Jenkins 通常使用自签证书,脚本已禁用 SSL 验证
- Jenkins CRUMB(CSRF 防护)会自动获取和附加
- 如果 Job 不支持
branch参数化构建,需确认 Job 配置 - 所有命令在项目根目录下执行
依赖
- Python 3.8+
requests库- config.json(通过 setup.py 配置)
- 无前置 skill 依赖(可独立使用)