# Jenkinser

> Jenkins 自动部署工具 — 通过 REST API 触发构建、等待结果、查看日志。触发词：部署、deploy、jenkins、构建、发布、上线。

- Skill: `jeandoom/jenkinser` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add jeandoom/jenkinser`
- Raw SKILL.md: https://api.skillmd.com/api/skills/jeandoom/jenkinser/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: DevOps & Infra
- Author: Jeandoom (https://skillmd.com/u/jeandoom)
- Updated: 2026-09-21
- Page: https://skillmd.com/skills/jeandoom/jenkinser

---


# Jenkinser — Jenkins 自动部署工具

通过 Jenkins REST API 完成自动部署：指定项目、环境、分支即可触发构建并跟踪结果。

## 触发条件

- 用户提到"部署"、"deploy"、"发布"、"上线"
- 用户提到"Jenkins"、"构建"、"触发构建"
- 用户提供了项目名+环境+分支要求部署

## 前置条件

- Python 3.8+ 已安装
- `requests` 库已安装（`pip install requests`）
- 已配置 Jenkins 凭据

### 首次配置

如果用户提到部署相关操作但尚未配置凭据，引导运行：

```bash
python <skill-dir>/scripts/setup.py
```

交互式输入 Jenkins URL、用户名、API Token，自动保存到 config.json 并验证连通性。

## 工具位置

```
<skill-dir>/scripts/jenkinser.py
```

## 核心功能：部署

当用户说"部署 xxx 项目到 xxx 环境，分支 xxx"时：

```bash
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"、"列出构建任务"时：

```bash
python <skill-dir>/scripts/jenkinser.py jobs [--filter <keyword>]
```

## 查询构建状态

当用户问"xxx 项目的构建状态"、"构建到哪了"时：

```bash
python <skill-dir>/scripts/jenkinser.py status --job <job_name> [--build <number>]
```

## 查看构建日志

当用户问"构建日志"、"构建报错了看看日志"时：

```bash
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 部署"

## 通用交互规则

1. **首次使用**：先检查 config.json 和 SDK 可用性，不可用则提示运行 setup.py
2. **部署确认**：触发部署前向用户展示匹配到的 Job 名称、目标分支，用户确认后执行
3. **禁止自主扩大范围**：部署失败时不得自主重试，必须先向用户说明情况
4. **敏感信息**：日志中可能包含敏感信息，展示时注意脱敏

## 注意事项

- 内网 Jenkins 通常使用自签证书，脚本已禁用 SSL 验证
- Jenkins CRUMB（CSRF 防护）会自动获取和附加
- 如果 Job 不支持 `branch` 参数化构建，需确认 Job 配置
- 所有命令在项目根目录下执行

## 依赖

- Python 3.8+
- `requests` 库
- config.json（通过 setup.py 配置）
- 无前置 skill 依赖（可独立使用）

