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 默认输出格式

最佳实践

  1. 始终限制轮次:在 CI 中使用 --max-turns 防止无限执行

  2. 限制工具:用 --allowedTools 只开放必要的工具

  3. 隔离环境:在 Docker 容器中使用 --dangerously-skip-permissions

  4. JSON 输出:自动化场景推荐使用 --output-format json 方便解析

下一步