Metadata-Version: 2.4
Name: yw-jenkins-cli
Version: 0.1.0
Summary: A simple Jenkins CI/CD CLI tool for triggering builds, monitoring status, and streaming logs
License-Expression: MIT
Requires-Python: >=3.11
Requires-Dist: click>=8.0
Requires-Dist: httpx>=0.28.0
Provides-Extra: dev
Requires-Dist: pytest; extra == 'dev'
Requires-Dist: ruff; extra == 'dev'
Description-Content-Type: text/markdown

# yw-cicd — Jenkins CI/CD CLI

简洁的 Jenkins 命令行工具，一条命令管理构建部署。支持任意 Jenkins 实例。

## 安装

```bash
pip install yw-jenkins-cli
```

## 配置

首次使用需要配置 Jenkins 连接信息（三选一）：

**方式一：配置文件（推荐）**

```bash
cat > ~/.jenkins-cli << 'EOF'
JENKINS_URL=https://your-jenkins.example.com
JENKINS_USER=your-username
JENKINS_TOKEN=your-api-token
EOF
chmod 600 ~/.jenkins-cli
```

**方式二：环境变量**

```bash
export JENKINS_URL="https://your-jenkins.example.com"
export JENKINS_USER="your-username"
export JENKINS_TOKEN="your-api-token"
```

**方式三：一键安装脚本**（从源码安装时，自动引导配置）

```bash
git clone <repo-url> && cd yw-jenkins-cli && bash setup.sh
```

> **API Token 获取方式**: 打开 `<你的Jenkins>/me/configure` → API Token → Add new Token

验证配置：

```bash
yw-cicd auth
```

## 命令一览

```bash
yw-cicd list [FILTER]           # 列出任务（支持正则过滤）
yw-cicd info <任务名>            # 查看任务参数
yw-cicd build <任务名> K=V ...   # 触发构建
yw-cicd status <任务名> [构建号]  # 查看构建状态
yw-cicd history <任务名> [-n N]  # 构建历史
yw-cicd log <任务名> <构建号>     # 查看构建日志
yw-cicd stop <任务名> <构建号>    # 停止构建
yw-cicd auth                    # 验证认证
```

## 常见场景

### 部署项目

```bash
# 1. 查看有哪些参数
yw-cicd info my-web-project

# 2. 触发构建（等待完成 + 实时日志）
yw-cicd build my-web-project ENV=test BranchName=master --follow-log
```

### 查看最近构建

```bash
yw-cicd history my-web-project -n 5
```

### 排查构建失败

```bash
yw-cicd status my-web-project       # 查看最近状态
yw-cicd log my-web-project 42       # 查看失败日志
```

### 搜索任务

```bash
yw-cicd list order           # 搜索包含 "order" 的任务
yw-cicd list "web|frontend"  # 正则搜索
```

## Claude Code 集成

项目附带 Claude Code Skill（`skill/SKILL.md`），安装后可在 Claude Code 中直接对话操作 Jenkins：

```bash
# 安装 Skill
mkdir -p ~/.claude/skills/yw-cicd
cp skill/SKILL.md ~/.claude/skills/yw-cicd/
```

之后直接对 Claude 说：
- "部署 my-project 到 test 环境"
- "查看 xxx 最近的构建"
- "构建失败了，帮我看下日志"

## 项目结构

```
yw-jenkins-cli/
├── setup.sh                    # 一键安装脚本
├── pyproject.toml
├── src/jenkins_cli/
│   ├── cli.py                  # CLI 入口（click）
│   ├── client.py               # Jenkins API 客户端（httpx）
│   └── config.py               # 认证配置
├── skill/
│   └── SKILL.md                # Claude Code Skill
└── tests/
```
