𝕏 f B! L
案件・求人数 12,345
案件を探す(準備中) エージェントを探す(準備中) お役立ち情報 ログイン
案件・求人数 12,345
Codex CLIでCI/CD自動化|GitHub Actions連携の実践

Codex CLIでCI/CD自動化|GitHub Actions連携の実践

Codex CLICI/CDGitHub Actions自動化DevOps
目次
⚡ 3秒でわかる!この記事のポイント
  • Codex CLIをGitHub Actionsに統合してPRごとに自動レビュー・テスト生成が可能
  • APIキーはGitHub Secretsで安全に管理し、コスト上限も設定
  • Jenkins・GitLab CIでも同様のパターンで応用できる

「Codex CLIをローカルで使ってるけど、CI/CDに組み込めたら最高なのに」と思ったことはありませんか?

この記事では、OpenAI Codex CLI完全攻略シリーズ第12弾として、GitHub ActionsとCodex CLIを連携させたCI/CDパイプラインの構築方法を、実装コード付きで解説します。

この記事でわかること
  • Codex CLIをCI/CDに組み込むメリット
  • GitHub Actionsでの具体的なワークフロー設定
  • PRごとの自動コードレビュー・テスト生成の実装
  • セキュリティとコスト管理の注意点
  • Jenkins・GitLab CIへの応用方法

Codex CLIをCI/CDに組み込むメリット

Codex CLIをCI/CDパイプラインに組み込むことで、以下の自動化が実現できます。

1. PRごとの自動コードレビュー

  • 変更差分を解析し、バグの可能性やコード品質の問題を自動検出
  • レビュアーの負担を軽減し、レビュー待ちのボトルネックを解消

2. テストコードの自動生成

  • 変更されたコードに対応するユニットテストを自動生成
  • テストカバレッジの維持・向上を自動化

3. 変更ログ・コミットメッセージの検証

  • Conventional Commitsへの準拠チェック
  • リリースノートの自動生成

4. ドキュメントの自動更新

  • APIドキュメントの変更検知と自動更新提案
  • READMEの更新漏れ検出

Codex CLI入門ガイドでCodex CLIの基本を押さえた上で、CI/CD連携に進みましょう。

前提環境とAPIキーのセキュア管理

必要な環境

  • GitHub リポジトリ(GitHub Actions有効)
  • OpenAI APIキー(GPT-4o以上推奨)
  • Node.js 18以上
  • Codex CLI v1.x以上

APIキーのセキュア管理

絶対にやってはいけないこと:

  • .envファイルにAPIキーを書いてコミット
  • ワークフローYAMLに直接APIキーを記述

推奨する管理方法:

  1. GitHub リポジトリの Settings → Secrets and variables → Actions に移動
  2. OPENAI_API_KEY という名前でシークレットを作成
  3. ワークフロー内で ${{ secrets.OPENAI_API_KEY }} として参照
env:
  OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}

Codex CLIのセキュリティ管理でも解説していますが、APIキーのローテーションも定期的に行いましょう。

GitHub Actionsワークフロー設定例

PRごとの自動コードレビュー

PRが作成・更新されたときに、Codex CLIで変更差分を自動レビューするワークフローです。

name: AI Code Review
on:
  pull_request:
    types: [opened, synchronize]

jobs:
  ai-review:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      pull-requests: write
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - uses: actions/setup-node@v4
        with:
          node-version: '22'

      - name: Install Codex CLI
        run: npm install -g @openai/codex-cli

      - name: Get diff
        id: diff
        run: |
          DIFF=$(git diff origin/${{ github.base_ref }}...HEAD -- '*.ts' '*.tsx' '*.js' '*.jsx')
          echo "diff<<EOF" >> $GITHUB_OUTPUT
          echo "$DIFF" >> $GITHUB_OUTPUT
          echo "EOF" >> $GITHUB_OUTPUT

      - name: AI Review
        env:
          OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
        run: |
          codex --quiet --mode review \
            --prompt "以下の差分をレビューしてください。バグ、パフォーマンス問題、セキュリティリスクを指摘し、改善提案をしてください。" \
            --input "${{ steps.diff.outputs.diff }}" \
            --output /tmp/review.md

      - name: Post Review Comment
        uses: actions/github-script@v7
        with:
          script: |
            const fs = require('fs');
            const review = fs.readFileSync('/tmp/review.md', 'utf8');
            await github.rest.issues.createComment({
              owner: context.repo.owner,
              repo: context.repo.repo,
              issue_number: context.issue.number,
              body: `## 🤖 AI Code Review\n\n${review}`
            });

テストコード自動生成ステップ

変更されたファイルに対応するテストを自動生成し、PRにコミットするワークフローです。

      - name: Generate Tests
        env:
          OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
        run: |
          CHANGED_FILES=$(git diff --name-only origin/${{ github.base_ref }}...HEAD -- 'src/**/*.ts')
          for file in $CHANGED_FILES; do
            test_file="${file%.ts}.test.ts"
            if [ ! -f "$test_file" ]; then
              codex --quiet --mode generate \
                --prompt "このファイルのユニットテストをJest + TypeScriptで生成してください" \
                --input "$file" \
                --output "$test_file"
            fi
          done

変更ログ・コミットメッセージ検証

      - name: Validate Commit Messages
        env:
          OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
        run: |
          COMMITS=$(git log origin/${{ github.base_ref }}...HEAD --pretty=format:"%s")
          codex --quiet --mode validate \
            --prompt "以下のコミットメッセージがConventional Commitsに準拠しているか検証し、不備があれば修正案を提示してください" \
            --input "$COMMITS" \
            --output /tmp/commit-validation.md

CI/CDパイプラインにおけるCodex CLI連携フロー

セキュリティとコスト管理の注意点

CI/CDにAIを組み込む際、セキュリティとコストの両面で注意が必要です。

セキュリティ:

  • Fork PRのリスク: フォークからのPRではSecretsが利用できない設定がデフォルト。pull_request_targetの使用は慎重に
  • プロンプトインジェクション: コード内にAIへの指示を仕込むことが理論上可能。信頼できないコードの解析には注意
  • APIキーの権限: 最小権限の原則に従い、CI/CD用のAPIキーは読み取り専用の操作に限定

コスト管理:

操作概算コスト(GPT-4o)月間目安(20PR/週)
コードレビュー$0.05〜0.20/PR$4〜16/月
テスト生成$0.10〜0.50/ファイル$8〜40/月
変更ログ検証$0.01〜0.05/PR$0.8〜4/月

コスト上限の設定:

OpenAIダッシュボードで月額上限を設定するだけでなく、ワークフロー内でもトークン数を制限できます。

      - name: AI Review (Cost Limited)
        run: |
          codex --quiet --mode review \
            --max-tokens 2000 \
            --model gpt-4o-mini \
            --input "${{ steps.diff.outputs.diff }}"

Codex CLIのテスト自動化と組み合わせることで、より包括的なCI/CDパイプラインが構築できます。

Jenkins / GitLab CIでの応用

GitHub Actions以外のCI/CDツールでも同様のパターンが使えます。

Jenkins(Jenkinsfile):

pipeline {
    agent any
    environment {
        OPENAI_API_KEY = credentials('openai-api-key')
    }
    stages {
        stage('AI Review') {
            steps {
                sh '''
                    npm install -g @openai/codex-cli
                    git diff HEAD~1 -- '*.ts' | codex --quiet --mode review \
                      --prompt "コードレビューを行ってください" \
                      --output review.md
                '''
            }
        }
    }
}

GitLab CI(.gitlab-ci.yml):

ai-review:
  stage: test
  image: node:22
  variables:
    OPENAI_API_KEY: $OPENAI_API_KEY
  script:
    - npm install -g @openai/codex-cli
    - git diff HEAD~1 -- '*.ts' | codex --quiet --mode review --output review.md
    - cat review.md
  only:
    - merge_requests

Codex CLIのコードレビューで解説しているレビューのカスタマイズテクニックは、CI/CD環境でもそのまま活用できます。

まとめ:AI駆動CI/CDの導入ステップ

Codex CLIをCI/CDに統合する際の推奨ステップは以下の通りです。

  1. まずはコードレビューから: リスクが低く効果が見えやすい
  2. テスト生成を追加: カバレッジ向上で品質が安定する
  3. コスト監視を設定: 月額上限とトークン制限で暴走を防ぐ
  4. チーム全体へ展開: 効果が確認できたらルール化する

AI駆動のCI/CDは、SES現場でもDevOps推進のアピール材料になります。SES BASEでは、CI/CD・DevOps経験が活きる案件を多数掲載しています。SES BASEで案件を探す

SES案件をお探しですか?

SES記事をもっと読む →
🏗️

SES BASE 編集長

SES業界歴10年以上のメンバーが在籍する編集チーム。SES企業での営業・エンジニア経験、フリーランス独立経験を持つメンバーが、業界のリアルな情報をお届けします。

📊 業界データに基づく記事制作 🔍 IPA・経済産業省データ参照 💼 SES実務経験者が執筆・監修