实战

Claude Code CI/CD 完全集成指南:GitHub Actions 自动化代码审查与测试

Claude Code 与 CI/CD 流水线完整集成教程:GitHub Actions 中非交互模式(claude -p)调用、PR 自动代码审查 Workflow、自动测试生成、构建失败时的 AI 诊断、安全扫描集成、Claude API Key 的 Secrets 管理、控制成本的模型选择策略(PR 审查用 Sonnet/失败诊断用 Haiku),以及 GitLab CI 和 Jenkins 的适配方案。

2026/3/204分钟 阅读ClaudeEagle

Claude Code 的非交互模式(claude -p)让 AI 变成 CI/CD 流水线中的一个步骤, 实现自动代码审查、失败诊断、安全扫描等自动化能力。

核心:非交互模式

bash
# -p / --print:非交互,直接输出结果,适合在脚本和 CI 中使用
claude -p "审查这段代码有没有安全漏洞" < code.py

# 配合 --output-format json 解析结果
claude -p "分析..." --output-format json | jq .result

# 通过环境变量传入 API Key
ANTHROPIC_API_KEY=${{ secrets.ANTHROPIC_API_KEY }} claude -p "..."

GitHub Actions:PR 自动代码审查

yaml
# .github/workflows/ai-code-review.yml
name: AI Code Review

on:
  pull_request:
    types: [opened, synchronize]

jobs:
  review:
    runs-on: ubuntu-latest
    permissions:
      pull-requests: write
      contents: read

    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Install Claude Code
        run: npm install -g @anthropic-ai/claude-code

      - name: Get PR diff
        id: diff
        run: |
          git diff origin/${{ github.base_ref }}...HEAD > pr_diff.txt
          echo "diff_size=$(wc -c < pr_diff.txt)" >> $GITHUB_OUTPUT

      - name: AI Code Review
        if: steps.diff.outputs.diff_size > 0
        id: review
        env:
          ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
        run: |
          REVIEW=$(claude -p "
          请审查以下代码变更(Git diff 格式),输出 Markdown 格式的审查报告:

          审查重点:
          1. 潜在 Bug 和逻辑错误
          2. 安全漏洞(SQL注入/XSS/权限绕过等)
          3. 性能问题(N+1/内存泄漏/不必要的循环)
          4. 代码规范和可读性
          5. 是否需要补充测试

          输出格式:
          - 总体评价(1-2句话)
          - 问题列表(按严重程度:Critical/Major/Minor)
          - 如无问题,输出「✅ 代码审查通过,未发现明显问题」
          " < pr_diff.txt)
          echo "review<<EOF" >> $GITHUB_OUTPUT
          echo "$REVIEW" >> $GITHUB_OUTPUT
          echo "EOF" >> $GITHUB_OUTPUT

      - name: Post Review Comment
        uses: actions/github-script@v7
        with:
          script: |
            github.rest.issues.createComment({
              issue_number: context.issue.number,
              owner: context.repo.owner,
              repo: context.repo.repo,
              body: `## 🤖 AI Code Review

${{ steps.review.outputs.review }}`
            })

构建失败 AI 诊断

yaml
# .github/workflows/build-with-ai-diagnosis.yml
name: Build & Test with AI Diagnosis

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with: { node-version: "20" }

      - name: Install & Build
        id: build
        run: |
          npm ci
          npm run build 2>&1 | tee build_output.txt
          echo "exit_code=${PIPESTATUS[1]}" >> $GITHUB_OUTPUT
        continue-on-error: true

      - name: AI Diagnosis on Failure
        if: steps.build.outputs.exit_code != '0'
        env:
          ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
        run: |
          DIAGNOSIS=$(claude -p "
          以下是 CI 构建失败的输出。请分析:
          1. 失败的根本原因
          2. 具体是哪个文件/哪行代码出问题
          3. 修复建议(具体的代码修改方向)
          " < build_output.txt)

          echo "## 🔍 AI 构建失败诊断" >> $GITHUB_STEP_SUMMARY
          echo "" >> $GITHUB_STEP_SUMMARY
          echo "$DIAGNOSIS" >> $GITHUB_STEP_SUMMARY

      - name: Fail if build failed
        if: steps.build.outputs.exit_code != '0'
        run: exit 1

自动测试生成

yaml
# 在 PR 中自动为新函数生成测试
- name: Generate Tests for New Functions
  env:
    ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
  run: |
    # 找出新增的函数
    git diff origin/main...HEAD --unified=0 |       grep "^+" | grep -E "^\+.*(function|def |async fn)" |       head -20 > new_functions.txt

    if [ -s new_functions.txt ]; then
      claude -p "
      以下是新增的函数,请为每个函数生成对应的单元测试:
      - 使用项目现有测试框架(Jest/Vitest)
      - 覆盖正常情况、边界条件、异常情况
      - 测试代码可以直接运行
      " < new_functions.txt >> $GITHUB_STEP_SUMMARY
    fi

API Key 安全配置

yaml
# 1. 在 GitHub 仓库设置中添加 Secret
# Settings → Secrets and variables → Actions → New secret
# 名称:ANTHROPIC_API_KEY

# 2. 在 workflow 中引用(不会在日志中暴露)
env:
  ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}

# 3. 限制 Secret 只对特定环境可用(生产环境)
environment: production  # 只有 production 环境的 workflow 才能访问

成本控制策略

yaml
# 根据任务选择不同模型,控制成本
- name: Quick Syntax Check (Haiku - 最便宜)
  run: claude -p "检查语法错误" --model claude-haiku-4-5 < code.py

- name: Full Code Review (Sonnet - 均衡)
  run: claude -p "完整代码审查" --model claude-sonnet-4-6 < pr_diff.txt

- name: Security Audit (Opus - 最强)
  if: github.ref == 'refs/heads/main'  # 只在合并到 main 时用 Opus
  run: claude -p "深度安全审计" --model claude-opus-4-6 < security_scope.py

来源:Claude Code 官方文档 - docs.anthropic.com/en/docs/claude-code

相关文章推荐

实战Claude Code 非交互模式(Headless):脚本自动化与 CI/CD 集成实战Claude Code Headless 非交互模式完整实战:基础 -p 参数用法、三大自动化脚本(PR 摘要/安全扫描/Changelog 生成)、GitHub Actions 集成(每 PR 自动审查/每周技术债务扫描)、输出格式控制与批量任务成本优化。2026/3/14实战Claude Code GitLab CI/CD 集成指南:@claude 触发 MR 自动化与 Bedrock/Vertex AI 企业配置Claude Code GitLab CI/CD 集成完整指南:事件驱动编排原理(@claude 触发/沙箱执行/MR 审批流)、两步快速配置(ANTHROPIC_API_KEY 掩码变量 + .gitlab-ci.yml Job)、AWS Bedrock OIDC 认证示例、Google Vertex AI Workload Identity 示例、CLAUDE.md CI 专用配置、安全最佳实践(掩码变量/分支保护/工具范围限制),以及三大常见问题排查。2026/3/5实战OpenClaw 与 Claude Code 协同使用实战:AI 聊天助手 + AI 编程助手的终极组合OpenClaw 与 Claude Code 协同使用的完整实战指南:两款工具的定位差异(OpenClaw=聊天AI助手框架,Claude Code=代码库直接操作的编程工具)、在 OpenClaw 中通过 exec 工具调用 Claude Code CLI(claude 命令)执行编程任务、把 OpenClaw 的 Telegram 消息转化为 Claude Code 任务(用自然语言描述→Claude Code执行→返回结果)、使用 OpenClaw Cron 定期触发 Claude Code 执行代码审查/依赖更新/测试/文档生成、CRS 代理在两者中的统一接入方案,以及常见的协同架构模式(主动触发/被动响应/定时执行)。2026/3/24实战Claude Code 自动生成 OpenAPI 文档:从代码到 Swagger UI 一键完成Claude Code 自动生成 OpenAPI(Swagger)文档完整教程:从现有代码逆向生成 OpenAPI 3.1 规范、为 FastAPI/Express/Gin 添加完整的 schema 注释、让 Claude 补全缺失的请求/响应 schema 定义、生成带真实示例值的 Swagger 文档、将 OpenAPI Spec 转为各语言客户端 SDK(openapi-generator)、保持文档与代码同步的 CI/CD 方案,以及从 Postman Collection 迁移到 OpenAPI 的方法。2026/3/20实战Claude Code Shell 脚本自动化实战:用 AI 编写和调试复杂 Bash/Zsh 脚本Claude Code 辅助 Shell 脚本开发的完整指南:让 Claude 生成 Bash/Zsh 脚本的高效提示词、复杂脚本的调试方法(set -x 逐行追踪)、常见运维场景脚本(日志清理/备份/监控告警/批量操作)、跨平台兼容性处理(macOS vs Linux 差异)、脚本安全性检查(避免注入/权限最小化)、让 Claude 解释复杂 awk/sed/find 命令,以及将一次性脚本重构为可复用工具库的方法。2026/3/20实战AI 辅助 Code Review:用 Claude Code 让 PR 审查效率提升 3 倍用 Claude Code 做 AI 辅助代码审查完整指南:Pre-commit Hook 自动检查、PR Review 流程接入、自定义审查规则、与 GitHub Actions 集成、常见审查场景的 Prompt 模板,及人机协作最佳实践。2026/3/14