🤖

GitHub ActionsでテストがfailしたらClaude Code Actionsで自動修正する

に公開

はじめに

CIでテストが失敗したとき、エラーメッセージを見てすぐに修正できる簡単なものでも、手動で修正してpushするのは手間がかかります。そんなとき、AIに自動で修正してもらえたら便利ですよね。

本記事では、GitHub ActionsとClaude Code Actionsを組み合わせて、テストが失敗したときに自動的に修正を試みるワークフローの実装方法を紹介します。

Claude Code Actionsとは

Claude Code Actionsは、AnthropicのClaude AIをGitHub Actionsで利用できるようにしたツールです。コードの解析、修正、ビルド/テストの実行などをAIに任せることができます。

実装方法

Claude Code Actionsを使うための準備は、公式ドキュメント等を参照してください。ここでは、必要な秘匿情報等が設定された前提で、CI用のGitHub Actionsの例を示します。

name: CI - Build Validation

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:
  build:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      pull-requests: read
      issues: read
      id-token: write
    
    steps:
    - name: Checkout code
      uses: actions/checkout@v4
      
    - name: Setup Node.js
      uses: actions/setup-node@v4
      with:
        node-version: '22.x'
        cache: 'npm'
        
    - name: Install dependencies
      run: npm ci
      
    - name: Build project
      run: npm run build
      
    - name: Run tests
      run: npm test
      
    - name: Run Claude on failure
      if: failure() && github.event_name == 'pull_request'
      uses: anthropics/claude-code-action@beta
      with:
        anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
        direct_prompt: |
          CIのビルドまたはテストが失敗しました。上記のエラーログを分析して、
          問題を修正してください。
          
          具体的には:
          1. エラーメッセージを確認
          2. 失敗の原因を特定
          3. 適切な修正を実行
          4. 修正後、再度ビルド/テストを実行して成功を確認
          5. 修正内容を説明的なコミットメッセージでコミット

ポイント

permissionsの設定

Claude Code Actionsのサンプル等に示されている権限を、CIのActionsにも設定する必要があります。

permissions:
  contents: read
  pull-requests: read
  issues: read
  id-token: write

PRでのみ実行

直接mainブランチにpushするのを避けるため、プルリクエストでのみ実行します。

if: failure() && github.event_name == 'pull_request'

direct_prompt を使ってClaude Code Actionsを起動

GitHub Actionsのbotアカウントによるコミットやコメントでは、デフォルトでは新しいワークフローをトリガーしません。failure() の中で @claude 直して といった内容をコメント投稿しても、Claude Code Actionsを起動できないという制約があります。

そのため、同じワークフロー内で failure()条件を使い、Claude Code Actionsのdirect_promptでプロンプトを指定してClaude AIを起動します。この方法によりCIの中で修正やコメントを完結できます。

まとめ

GitHub ActionsとClaude Code Actionsを組み合わせることで、ビルドやテストの失敗を自動的に修正するワークフローを構築できました。いくつかプライベートのプロジェクトに導入したところ、意図的に入れたエラーであればほぼ特定してくれましたし、ライブラリのバージョンアップにおける非互換な変更等も一部修正してくれました。

mcpの利用でさらに便利になる可能性がありますので、いろいろなプロジェクトに入れて試していく予定です。

GitHubで編集を提案
GMOペパボ株式会社

Discussion