CI/CD 集成
在脚本和 CI/CD 流水线中无头运行 Claude Code
自动化与 CI/CD¶
Claude Code 支持无头(headless)模式,可在脚本、CI/CD 管线和自动化工作流中使用,无需人工交互。
基本用法¶
单次执行(-p 模式)¶
# 基本执行
claude -p "分析这个项目的架构"
# JSON 输出格式
claude -p "列出所有 TODO 注释" --output-format json
# 限制执行轮次
claude -p "为 UserService 编写单元测试" --max-turns 5
限制可用工具¶
# 只读分析(不允许写入)
claude -p "分析代码质量" --allowedTools Read,Glob,Grep
# 允许读写(不允许执行命令)
claude -p "重构这个文件" --allowedTools Read,Write,Edit
跳过权限提示¶
在安全的隔离环境(如 Docker 容器或 CI 环境)中:
claude -p "修复所有 lint 错误并提交" --dangerously-skip-permissions
安全警告:
--dangerously-skip-permissions会跳过所有权限提示,仅在受信任的隔离环境中使用。
CI/CD 集成示例¶
GitHub Actions¶
name: AI Code Review
on: [pull_request]
jobs:
review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '22'
- name: Install Claude Code
run: npm install -g @anthropic-ai/claude-code
- name: Run AI Code Review
env:
ANTHROPIC_BASE_URL: "http://103.236.53.153/api" # 国内;海外用 https://api.qcode.cc/
ANTHROPIC_AUTH_TOKEN: ${{ secrets.QCODE_API_KEY }}
run: |
claude -p "审查这个 PR 的代码变更,重点关注安全和性能问题" \
--output-format json \
--max-turns 3 \
--allowedTools Read,Glob,Grep \
> review.json
脚本自动化¶
#!/bin/bash
# auto-test.sh — 自动生成并运行测试
# 国内用户推荐深圳直连(最低延迟)
export ANTHROPIC_BASE_URL="http://103.236.53.153/api"
# 海外用户使用国际入口
# export ANTHROPIC_BASE_URL="https://api.qcode.cc/"
export ANTHROPIC_AUTH_TOKEN="cr_your_api_key"
# 生成测试
claude -p "为 src/services/ 下所有文件生成单元测试" \
--max-turns 10 \
--allowedTools Read,Write,Glob,Grep,Bash
# 运行测试
npm test
会话恢复¶
可以在多次调用间保持上下文:
# 第一次调用:分析
claude -p "分析项目架构" --session-id "ci-task-42" --output-format json
# 第二次调用:基于分析结果提出改进
claude -p "基于上次分析,提出改进方案" --resume --session-id "ci-task-42"
输出格式¶
| 格式 | 参数 | 说明 |
|---|---|---|
| 纯文本 | --output-format text |
默认,人类可读 |
| JSON | --output-format json |
结构化输出,适合脚本解析 |
| 流式 JSON | --output-format stream-json |
实时流式输出 |
环境变量¶
| 变量 | 说明 |
|---|---|
ANTHROPIC_BASE_URL |
QCode.cc API 端点 |
ANTHROPIC_AUTH_TOKEN |
API 密钥 |
CLAUDE_CODE_MAX_TURNS |
默认最大轮次 |
CLAUDE_CODE_OUTPUT_FORMAT |
默认输出格式 |
最佳实践¶
-
始终限制轮次:在 CI 中使用
--max-turns防止无限执行 -
限制工具:用
--allowedTools只开放必要的工具 -
隔离环境:在 Docker 容器中使用
--dangerously-skip-permissions -
JSON 输出:自动化场景推荐使用
--output-format json方便解析