mcpField
G
github-project-automation

github-project-automation

github.com/jackspaceクラウド・DevOps1640 回インストール12 週間前に更新
リポジトリ

github-project-automation について

CI、Issueテンプレート、セキュリティスキャンを設定するリポジトリ管理者向けのGitHub自動化スキルです。フレームワーク別のワークフローテンプレートと設定ガイドで、よくある設定ミスを防ぎます。

主な機能

  1. 01複数スタック向けCIワークフローテンプレート
  2. 02Issue・PRテンプレート
  3. 03CodeQLセキュリティスキャン設定
  4. 04Dependabot依存関係更新設定
  5. 05Actionsのエラー回避ガイド

活用シーン

  1. 01ReactまたはNode.jsプロジェクトにCIを追加
  2. 02Pythonのマトリックステストを設定
  3. 03コードスキャンと依存関係更新を設定
  4. 04バグ報告と機能要望を標準化

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/jackspace/claudeskillz --skill github-project-automation

インストール後、Claude Code で/github-project-automationを入力して読み込まれたか確認します。

同梱ファイルREADME.mdSKILL.json

詳細

GitHub プロジェクトの自動化

ステータス:本番環境で使用可能 ✅ 最終更新日:2025-11-06 依存関係:なし(git と gh CLI の使用を推奨) 最新バージョン:actions/[email protected]、actions/[email protected]、github/[email protected]


クイックスタート(15 分)

1. フレームワークを選択する

プロジェクトに合ったワークフローテンプレートを選択します。

# For React/Vite projects
cp templates/workflows/ci-react.yml .github/workflows/ci.yml

# For Node.js libraries (matrix testing)
cp templates/workflows/ci-node.yml .github/workflows/ci.yml

# For Python projects
cp templates/workflows/ci-python.yml .github/workflows/ci.yml

# For Cloudflare Workers
cp templates/workflows/ci-cloudflare-workers.yml .github/workflows/deploy.yml

# For basic projects (any framework)
cp templates/workflows/ci-basic.yml .github/workflows/ci.yml

重要な理由:

  • 事前検証済みの YAML により、構文エラーを防止できます
  • セキュリティのため、アクションを SHA で固定します
  • ランナーのバージョンを明示します(ubuntu-24.04)
  • GitHub Actions のエラーを 8 種類すべて防止します
2. Issue テンプレートを追加する
# Create directory structure
mkdir -p .github/ISSUE_TEMPLATE

# Copy YAML templates (with validation)
cp templates/issue-templates/bug_report.yml .github/ISSUE_TEMPLATE/
cp templates/issue-templates/feature_request.yml .github/ISSUE_TEMPLATE/

Markdown ではなく YAML を使う理由:

  • 必須フィールドの検証(エラー #12 を防止)
  • 一貫性のあるデータ構造
  • より優れたユーザー体験
  • 不完全な Issue の発生を防止
3. セキュリティスキャンを有効にする
# CodeQL for code analysis
cp templates/workflows/security-codeql.yml .github/workflows/codeql.yml

# Dependabot for dependency updates
cp templates/security/dependabot.yml .github/dependabot.yml

重要:

  • CodeQL には特定の権限(security-events: write)が必要です
  • Dependabot はエコシステムごとに PR の上限が 10 件です
  • どちらも Dependabot の PR で実行する必要があります(エラー #13 を防止)

完全なセットアップ手順(5 ステップ)

ステップ 1:リポジトリ構造

標準的な GitHub 自動化ディレクトリ構造を作成します。

# Create all required directories
mkdir -p .github/{workflows,ISSUE_TEMPLATE}

# Verify structure
tree .github/
# .github/
# ├── workflows/        # GitHub Actions workflows
# ├── ISSUE_TEMPLATE/   # Issue templates
# └── dependabot.yml    # Dependabot config (root of .github/)

重要なポイント:

  • workflows/ は複数形です
  • ISSUE_TEMPLATE/ は単数形です(従来の命名規則)
  • dependabot.yml は .github/ に配置します。workflows/ ではありません
ステップ 2:ワークフローテンプレートを選択する

プロジェクトのニーズに応じてワークフローを選択します。

継続的インテグレーション(1 つ選択):

  1. ci-basic.yml - 汎用的なテスト/lint/ビルド(すべてのフレームワーク向け)
  2. ci-node.yml - マトリックステスト対応の Node.js(18、20、22)
  3. ci-python.yml - マトリックステスト対応の Python(3.10、3.11、3.12)
  4. ci-react.yml - 型チェック対応の React/TypeScript

デプロイ(任意): 5. ci-cloudflare-workers.yml - Cloudflare Workers にデプロイ

セキュリティ(推奨): 6. security-codeql.yml - コードスキャン 7. dependabot.yml - 依存関係の更新

選択したテンプレートをコピーします:

# Example: React app with security
cp templates/workflows/ci-react.yml .github/workflows/ci.yml
cp templates/workflows/security-codeql.yml .github/workflows/codeql.yml
cp templates/security/dependabot.yml .github/dependabot.yml
ステップ 3:シークレットを設定する(デプロイする場合)

デプロイワークフロー(Cloudflare、AWS など)で使用するシークレットを追加します。

# Using gh CLI
gh secret set CLOUDFLARE_API_TOKEN
# Paste your token when prompted

# Verify
gh secret list

重要な構文:

# ✅ CORRECT
env:
  API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}

# ❌ WRONG - Missing double braces
env:
  API_TOKEN: $secrets.CLOUDFLARE_API_TOKEN

エラー #6(シークレットの構文)を防止します。

ステップ 4:Issue/PR テンプレートを追加する

Issue テンプレート(YAML 形式):

cp templates/issue-templates/bug_report.yml .github/ISSUE_TEMPLATE/
cp templates/issue-templates/feature_request.yml .github/ISSUE_TEMPLATE/

PR テンプレート(Markdown 形式):

cp templates/pr-templates/PULL_REQUEST_TEMPLATE.md .github/

形式を分ける理由:

  • Issue テンプレート:検証のために YAML を使用します
  • PR テンプレート:Markdown を使用します(GitHub の制限)
ステップ 5:プロジェクトに合わせてカスタマイズする

必要なカスタマイズ:

  1. ユーザー名/メールアドレスを更新する:

    # In issue templates
    assignees:
      - jezweb  # ← Change to your GitHub username
    
    # In dependabot.yml
    reviewers:
      - "jezweb"  # ← Change to your username
    
  2. 言語を調整する(CodeQL):

    # In security-codeql.yml
    matrix:
      language: ['javascript-typescript']  # ← Add your languages
      # Options: c-cpp, csharp, go, java-kotlin, python, ruby, swift
    
  3. パッケージマネージャーを更新する(Dependabot):

    # In dependabot.yml
    - package-ecosystem: "npm"  # ← Change if using yarn/pnpm/pip/etc
    
  4. デプロイ URL を設定する(Cloudflare):

    # In ci-cloudflare-workers.yml
    echo "Worker URL: https://your-worker.your-subdomain.workers.dev"
    # ← Update with your actual Worker URL
    

重要なルール

必ず行うこと

✅ アクションは @latest ではなく、SHA で固定する

# ✅ CORRECT
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683  # v4.2.2

# ❌ WRONG
- uses: actions/checkout@latest

✅ ランナーのバージョンを明示する

# ✅ CORRECT
runs-on: ubuntu-24.04  # Locked to specific LTS

# ❌ RISKY
runs-on: ubuntu-latest  # Changes over time

✅ コンテキスト構文でシークレットを指定する

# ✅ CORRECT
${{ secrets.API_TOKEN }}

# ❌ WRONG
$secrets.API_TOKEN

✅ コミット前に YAML を検証する

# Use yamllint or GitHub's workflow validator
yamllint .github/workflows/*.yml

✅ まずフィーチャーブランチでワークフローをテストする

git checkout -b test/github-actions
# Push and verify CI runs before merging to main
絶対に行わないこと

❌ アクションのバージョンに @latest を使わない

  • アクションが更新されると、警告なしに動作しなくなることがあります
  • セキュリティリスクがあります(未審査のバージョンが自動的に採用されます)

❌ ワークフローにシークレットをハードコードしない

# ❌ NEVER DO THIS
env:
  API_TOKEN: "sk_live_abc123..."  # Secret exposed in repo!

❌ コンパイルが必要な言語でビルド手順を省略しない(CodeQL)

# ❌ WRONG - CodeQL fails for Java without build
- name: Perform CodeQL Analysis  # No .class files to analyze

# ✅ CORRECT - Include build
- name: Build project
  run: ./mvnw clean install
- name: Perform CodeQL Analysis  # Now has .class files

❌ Dependabot で devDependencies を無視しない

  • devDependencies はビルド時に実行され、悪意のあるコードを実行する可能性があります
  • 本番用と開発用の依存関係の両方を含めます

❌ 単一の ISSUE_TEMPLATE.md ファイルを使わない

# ❌ OLD WAY
.github/ISSUE_TEMPLATE.md

# ✅ NEW WAY
.github/ISSUE_TEMPLATE/
  bug_report.yml
  feature_request.yml

既知の問題の防止

このスキルでは、文書化された 18 件の問題を防止します。

問題 #1:YAML のインデントエラー

エラー:workflow file is invalid. mapping values are not allowed in this context 出典:Stack Overflow(GitHub Actions で最もよくあるエラー) 発生する理由:スペースとタブの混在、コロンの後のスペース不足、不統一なインデント 防止策:インデントを 2 スペースで検証済みのスキルテンプレートを使用します

Issue #2: run または uses フィールドがない

エラー:Error: Step must have a run or uses key 出典:GitHub Actions のエラーログ 発生する理由:ステップ定義が空で、コマンドの追加を忘れています 防止策:テンプレートには、完全なステップ定義が含まれています

Issue #3: アクションのバージョン固定に関する問題

エラー:アクションの更新後に、ワークフローが予期せず動作しなくなります 出典:GitHub セキュリティのベストプラクティス 2025 発生する理由:特定の SHA ではなく、@latest または @v4 を使用しています 防止策:すべてのテンプレートで、バージョンコメントを付けて SHA に固定しています

Issue #4: ランナーのバージョンが正しくない

エラー:環境が予期せず変更され、互換性の問題が発生します 出典:CI/CD トラブルシューティングガイド 発生する理由:ubuntu-latest が 2024 年に 22.04 から 24.04 に変更されました 防止策:テンプレートでは ubuntu-24.04 を明示的に使用しています

Issue #5: 同じ名前のキーが複数ある

エラー:duplicate key found in mapping 出典:YAML パーサーの更新 発生する理由:コピー&ペーストのミスや、ジョブ名/ステップ名の重複です 防止策:テンプレートでは、一意でわかりやすい名前を使用しています

Issue #6: シークレットを使用できない

エラー:Secret not found または変数が空になります 出典:GitHub Actions デバッグガイド 発生する理由:構文が間違っています(${{ secrets.NAME }} ではなく $secrets.NAME を使用しています) 防止策:テンプレートでは、正しいコンテキスト構文を示しています

Issue #7: マトリックス戦略のエラー

エラー:マトリックスが展開されず、テストがスキップされます 出典:トラブルシューティングガイド 発生する理由:マトリックス設定が無効、または変数参照が間違っています 防止策:テンプレートには、動作するマトリックスの例が含まれています

Issue #8: コンテキスト構文のエラー

エラー:変数が展開されず、値が空になります 出典:GitHub Actions のドキュメント 発生する理由:${{ }} で囲むのを忘れています 防止策:テンプレートでは、すべてのコンテキストパターンを示しています

Issue #9: テンプレートが複雑すぎる

エラー:コントリビューターがテンプレートを無視し、不完全な Issue を作成します 出典:GitHub のベストプラクティス 発生する理由:20 項目以上のフィールドがあり、関係のない詳細を尋ねています 防止策:スキルのテンプレートは最小限(最大 5~8 項目)です

Issue #10: コンテキストのない汎用的なプロンプト

エラー:バグ報告が曖昧で、再現が困難です 出典:テンプレートのベストプラクティス 発生する理由:必要な情報についてのガイダンスがありません 防止策:テンプレートには、具体的なプレースホルダーが含まれています

Issue #11: 複数のテンプレートによる混乱

エラー:どのテンプレートを使えばよいかわかりません 出典:GitHub のドキュメント 発生する理由:単一の ISSUE_TEMPLATE.md ファイルを使用しています 防止策:ISSUE_TEMPLATE/ ディレクトリと config.yml を適切に設定します

Issue #12: 必須フィールドがない

エラー:Issue が不完全で、重要な情報が不足しています 出典:コミュニティからのフィードバック 発生する理由:Markdown テンプレートでは入力内容を検証できません 防止策:required: true を指定した YAML テンプレートを使用します

Issue #13: Dependabot の PR で CodeQL が実行されない

エラー:依存関係の更新時にセキュリティスキャンがスキップされます 出典:GitHub コミュニティディスカッション #121836 発生する理由:デフォルトのトリガーに制限があります 防止策:テンプレートに push: branches: [dependabot/**] が含まれています

Issue #14: ブランチ保護によってすべての PR がブロックされる

エラー:正当な PR がブロックされ、開発が停滞します 出典:セキュリティアラートガイド 発生する理由:アラートポリシーが過度に制限的です 防止策:リファレンスドキュメントで、適切な範囲の設定方法を説明しています

Issue #15: コンパイル言語向け CodeQL の設定

エラー:No code found to analyze 出典:CodeQL のドキュメント 発生する理由:Java/C++/C# 向けのビルド手順がありません 防止策:テンプレートには、ビルドの例が含まれています

Issue #16: 開発用依存関係が無視される

エラー:脆弱性のある devDependencies がスキャンされません 出典:セキュリティのベストプラクティス 発生する理由:devDependencies は重要ではないと考えています 防止策:テンプレートでは、すべての依存関係をスキャンします

Issue #17: Dependabot アラートの上限

エラー:自動修正されるアラートは 10 件のみで、残りはキューに入れられます 出典:GitHub のドキュメント(ハードリミット) 発生する理由:GitHub では、エコシステムごとにオープンな PR を 10 件に制限しています 防止策:テンプレートで、上限と回避策を説明しています

Issue #18:ワークフローの重複

エラー:CI の実行時間の浪費、メンテナンスの負担 出典:DevSecOps Guides 発生する理由:CI/CodeQL/依存関係レビュー用のワークフローが個別に用意されている 防止策:テンプレートには統合されたオプションが用意されています

参照:詳細なエラーの説明と例については、references/common-errors.md をご覧ください


設定ファイルのリファレンス

dependabot.yml(完全な例)
version: 2
updates:
  # npm dependencies (including devDependencies)
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "weekly"
      day: "monday"
      time: "09:00"
      timezone: "Australia/Sydney"
    open-pull-requests-limit: 10  # GitHub hard limit
    reviewers:
      - "jezweb"
    labels:
      - "dependencies"
      - "npm"
    commit-message:
      prefix: "chore"
      prefix-development: "chore"
      include: "scope"

  # GitHub Actions
  - package-ecosystem: "github-actions"
    directory: "/"
    schedule:
      interval: "weekly"
    open-pull-requests-limit: 5
    labels:
      - "dependencies"
      - "github-actions"

これらの設定の理由:

  • 週次スケジュールにすることで、毎日実行する場合と比べて通知を減らせます
  • PR の上限 10 件は GitHub の最大値と一致します
  • devDependencies を含みます(エラー #16 の防止)
  • トリアージを迅速化するため、レビュアーが自動で割り当てられます
  • Conventional Commits のプレフィックス(依存関係には chore:)を使います
CodeQL ワークフロー(security-codeql.yml)
name: CodeQL Security Scan

on:
  push:
    branches: [main, master]
  pull_request:
    branches: [main, master]
  schedule:
    - cron: '0 0 * * 0'  # Weekly on Sundays

jobs:
  analyze:
    runs-on: ubuntu-24.04
    permissions:
      actions: read
      contents: read
      security-events: write  # REQUIRED for CodeQL

    strategy:
      fail-fast: false
      matrix:
        language: ['javascript-typescript']  # Add your languages

    steps:
      - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683

      - name: Initialize CodeQL
        uses: github/codeql-action/init@ea9e4e37992a54ee68a9622e985e60c8e8f12d9f
        with:
          languages: ${{ matrix.language }}

      # For compiled languages, add build here

      - name: Perform CodeQL Analysis
        uses: github/codeql-action/analyze@ea9e4e37992a54ee68a9622e985e60c8e8f12d9f

重要な権限:

  • CodeQL のアップロードには security-events: write が必須です
  • これがない場合、ワークフローはエラーを報告せずに失敗します

一般的なパターン

パターン 1:複数フレームワークのマトリックステスト

複数の Node.js/Python バージョンをサポートするライブラリで使用します。

strategy:
  matrix:
    node-version: [18, 20, 22]  # LTS versions
  fail-fast: false  # Test all versions even if one fails

steps:
  - uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af
    with:
      node-version: ${{ matrix.node-version }}
      cache: 'npm'  # Cache dependencies for speed

  - run: npm ci  # Use ci (not install) for reproducible builds
  - run: npm test

使用する場面:幅広いバージョンをサポートするライブラリ、CLI ツール、パッケージ

パターン 2:条件付きデプロイ

main への push 時のみデプロイし、PR ではデプロイしません。

jobs:
  deploy:
    if: github.event_name == 'push' && github.ref == 'refs/heads/main'
    steps:
      - run: npx wrangler deploy
        env:
          CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}

使用する場面:本番環境へのデプロイ、PR からのテストデプロイの回避

パターン 3:アーティファクトのアップロード/ダウンロード

ジョブ間でビルド出力を共有します。

jobs:
  build:
    steps:
      - run: npm run build
      - uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882
        with:
          name: build-output
          path: dist/
          retention-days: 7

  deploy:
    needs: build
    steps:
      - uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16
        with:
          name: build-output
          path: dist/
      - run: # Deploy from dist/

使用する場面:ビルドとデプロイの分離、テスト結果の共有


同梱リソースの使用

スクリプト(scripts/)

フェーズ 3 で追加予定 — 一般的なタスクを自動化するスクリプトです。

  • setup-github-project.sh - 対話形式のセットアップウィザード
  • validate-workflows.sh - コミット前の YAML 検証
  • generate-codeowners.sh - git log からの自動生成
  • sync-templates.sh - 既存プロジェクトの更新

使用例:

./scripts/setup-github-project.sh react
# Prompts for project details, generates .github/ structure
リファレンス(references/)

必要に応じて読み込み、エラーの解決方法を詳しく確認できます。

  • references/common-errors.md - 解決策を含む全 18 件のエラー(完全版)
  • references/github-actions-reference.md - Actions API の完全なリファレンス(フェーズ 2)
  • references/workflow-syntax.md - YAML 構文ガイド(フェーズ 2)
  • references/dependabot-guide.md - Dependabot の詳細ガイド(フェーズ 2)
  • references/codeql-guide.md - CodeQL の設定(フェーズ 2)
  • references/secrets-management.md - シークレット管理のベストプラクティス(フェーズ 2)
  • references/matrix-strategies.md - マトリックスパターン(フェーズ 2)

Claude がこれらを読み込む場面:ユーザーが特定のエラーに遭遇した場合、詳細な設定が必要な場合、または複雑な状況のトラブルシューティングを行う場合

テンプレート(templates/)

完全なコレクション — 種類ごとに整理された 45 以上のファイル:

ワークフロー(12 個のテンプレート):

  • フェーズ 1(完了):ci-basic、ci-node、ci-python、ci-react、ci-cloudflare-workers、security-codeql
  • フェーズ 2:ci-matrix、cd-production、release、pr-checks、scheduled-maintenance、security-dependency-review

Issue テンプレート(4 個のテンプレート):

  • フェーズ 1(完了):bug_report.yml、feature_request.yml
  • フェーズ 2:documentation.yml、config.yml

PR テンプレート(3 個のテンプレート):

  • フェーズ 1(完了):PULL_REQUEST_TEMPLATE.md
  • フェーズ 2:feature.md、bugfix.md

セキュリティ(3 個のテンプレート):

  • フェーズ 1(完了):dependabot.yml
  • フェーズ 2:SECURITY.md、codeql-config.yml

その他(2 個のテンプレート):

  • フェーズ 2:CODEOWNERS、FUNDING.yml

既存スキルとの連携

cloudflare-worker-base → CI/CD の追加

ユーザーが新しい Worker プロジェクトを作成する場合:

# User: "Create Cloudflare Worker with CI/CD"

# This skill runs AFTER cloudflare-worker-base
cp templates/workflows/ci-cloudflare-workers.yml .github/workflows/deploy.yml

# Configure secrets
gh secret set CLOUDFLARE_API_TOKEN

結果:main への push 時に自動デプロイされる新しい Worker

project-planning → 自動化の生成

ユーザーが project-planning スキルを使用する場合:

# User: "Plan new React app with GitHub automation"

# project-planning generates IMPLEMENTATION_PHASES.md
# Then this skill sets up GitHub automation
cp templates/workflows/ci-react.yml .github/workflows/ci.yml
cp templates/issue-templates/*.yml .github/ISSUE_TEMPLATE/

結果:GitHub の自動化がすべて設定された計画済みプロジェクト

open-source-contributions → コントリビューター向け環境の設定

プロジェクトをオープンソースとして公開する準備をする場合:

# User: "Prepare repo for open source contributions"

# open-source-contributions skill handles CONTRIBUTING.md
# This skill adds issue templates and CODEOWNERS
cp templates/issue-templates/*.yml .github/ISSUE_TEMPLATE/
cp templates/misc/CODEOWNERS .github/

結果:コントリビューターが参加しやすいリポジトリ


高度なトピック

GitHub Projects v2 との統合

ステータス:調査済み、未実装(/planning/github-projects-poc-findings.md を参照)

別のスキルにする理由:複雑な GraphQL API、ID 管理、ニッチなユースケース

検討するタイミング:ボード管理の自動化を必要とするチームプロジェクト

カスタムワークフローの構成

ワークフローを組み合わせて効率化する方法:

# Option A: Separate workflows (easier maintenance)
.github/workflows/
  ci.yml         # Test and build
  codeql.yml     # Security scanning
  deploy.yml     # Production deployment

# Option B: Integrated workflow (fewer CI minutes)
.github/workflows/
  main.yml       # All-in-one: test, scan, deploy

トレードオフ:分離=明確、統合=高速(エラー #18 の防止)

複数環境へのデプロイ

ステージングと本番環境にデプロイする方法:

jobs:
  deploy-staging:
    if: github.ref == 'refs/heads/develop'
    steps:
      - run: npx wrangler deploy --env staging

  deploy-production:
    if: github.ref == 'refs/heads/main'
    steps:
      - run: npx wrangler deploy --env production

必要条件:wrangler.jsonc で Wrangler の環境が設定されていること


依存関係

必須:

  • Git 2.0+ - バージョン管理
  • GitHub CLI (gh) 2.0+ - シークレット管理、PR の作成(任意ですが推奨)

任意:

  • yamllint 1.20+ - コミット前の YAML 検証
  • act(ローカル GitHub Actions ランナー) - ワークフローをローカルでテスト

gh CLI のインストール:

# macOS
brew install gh

# Ubuntu
sudo apt install gh

# Verify
gh --version

公式ドキュメント

Context7 ライブラリ ID:Context7 MCP で /websites/github または /github/ を検索してください


パッケージバージョン(2025-11-06 検証済み)

GitHub Actions(テンプレートで SHA 固定):

actions/checkout: 11bd71901bbe5b1630ceea73d27597364c9af683  # v4.2.2
actions/setup-node: 39370e3970a6d050c480ffad4ff0ed4d3fdee5af  # v4.1.0
actions/setup-python: 0b93645e9fea7318ecaed2b359559ac225c90a2b  # v5.3.0
actions/upload-artifact: b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882  # v4.4.3
actions/download-artifact: fa0a91b85d4f404e444e00e005971372dc801d16  # v4.1.8
github/codeql-action/init: ea9e4e37992a54ee68a9622e985e60c8e8f12d9f  # v3.27.4
github/codeql-action/analyze: ea9e4e37992a54ee68a9622e985e60c8e8f12d9f  # v3.27.4
codecov/codecov-action: 5c47607acb93fed5485fdbf7232e8a31425f672a  # v5.0.2

検証コマンド:

# Check latest action versions
gh api repos/actions/checkout/releases/latest
gh api repos/github/codeql-action/releases/latest

本番環境での例

このスキルは、3 つのプロジェクトでの本番環境テストに基づいています。

プロジェクト 1:React アプリ

  • 使用テンプレート:ci-react.yml
  • ビルド時間:2m 15s(CI)、45s(ローカル)
  • エラー:0 件(既知の問題 18 件をすべて防止)
  • 検証:✅ 型チェック、リント、テスト、ビルド、CodeQL

プロジェクト 2:Cloudflare Worker

  • 使用テンプレート:ci-cloudflare-workers.yml
  • デプロイ時間:1m 30s(自動)
  • エラー:0 件
  • 検証:✅ 本番環境へのデプロイ済み、Wrangler によるデプロイ成功

プロジェクト 3:Python CLI ツール

  • 使用テンプレート:ci-python.yml(マトリックス)
  • テスト時間:3m 45s(3 つの Python バージョンで並列実行)
  • エラー:0 件
  • 検証:✅ 3.10、3.11、3.12 でのマトリックステスト

トークン削減:約 70%(平均 26,500 → 7,000 トークン)


トラブルシューティング

問題:ワークフローがトリガーされない

症状:コードをプッシュしても CI が実行されない

解決策:

  1. ワークフローが .github/workflows/ にあることを確認してください(.github/workflow/ ではありません)
  2. YAML が有効であることを確認してください:yamllint .github/workflows/*.yml
  3. トリガーがブランチに合っていることを確認してください:on: push: branches: [main]
  4. ワークフローファイルがコミットされ、プッシュされていることを確認してください
  5. GitHub の Actions タブでエラーメッセージを確認してください
問題:CodeQL が「No code found」で失敗する

症状:CodeQL ワークフローは完了するものの、何も検出されない

解決策:

  1. コンパイルが必要な言語(Java、C++、C#)の場合は、ビルドステップを追加してください:
    - name: Build project
      run: ./mvnw clean install
    
  2. マトリックスで言語が正しいことを確認してください:
    language: ['java-kotlin']  # Not just 'java'
    
  3. CodeQL がその言語に対応していることを確認してください(ドキュメントを参照)
問題:ワークフローでシークレットを利用できない

症状:Secret not found または変数が空になる

解決策:

  1. リポジトリにシークレットが追加されていることを確認してください:gh secret list
  2. 構文で二重波括弧が使われていることを確認してください:${{ secrets.NAME }}
  3. シークレットでは大文字と小文字が区別されます(正確な名前を使用してください)
  4. フォークではシークレットを利用できません(セキュリティ上の理由)
問題:Dependabot の PR が何度も失敗する

症状:自動作成された PR が CI チェックに失敗する

解決策:

  1. CodeQL が Dependabot の PR でトリガーされることを確認してください:
    on:
      push:
        branches: [dependabot/**]
    
  2. ブランチ保護によってボットの PR がブロックされていないことを確認してください
  3. 更新された依存関係を使って、テストがローカルで成功することを確認してください
  4. Dependabot のログを確認してください:Settings → Security → Dependabot
問題:マトリックスビルドがすべて失敗する

症状:すべてのマトリックスジョブが同じエラーで失敗する

解決策:

  1. 変数の参照に matrix. が含まれていることを確認してください:
    node-version: ${{ matrix.node-version }}  # NOT ${{ node-version }}
    
  2. マトリックスの値が有効であることを確認してください:
    matrix:
      node-version: [18, 20, 22]  # Valid LTS versions
    
  3. すべての失敗を確認するには fail-fast: false を使用してください:
    strategy:
      fail-fast: false
    

完全なセットアップチェックリスト

このチェックリストを使用して、GitHub の自動化設定を確認してください。

ワークフロー:

  • .github/workflows/ ディレクトリを作成した
  • 適切な CI ワークフローテンプレートをコピーした
  • ワークフローファイル内のユーザー名を更新した
  • シークレットを設定した(デプロイする場合)
  • すべてのアクションを SHA で固定した(@latest は使用しない)
  • ランナーのバージョンを明示した(ubuntu-24.04)
  • ワークフローのトリガーがブランチと一致している(main/master)

Issue テンプレート:

  • .github/ISSUE_TEMPLATE/ ディレクトリを作成した
  • bug_report.yml をコピーした
  • feature_request.yml をコピーした
  • 担当者を自分の GitHub ユーザー名に更新した
  • YAML テンプレートで重要なフィールドに required: true を使用している

PR テンプレート:

  • PULL_REQUEST_TEMPLATE.md を .github/ にコピーした
  • プロジェクトのニーズに合わせてチェックリストをカスタマイズした

セキュリティ:

  • security-codeql.yml をコピーした
  • CodeQL マトリックスに正しい言語を追加した
  • security-events: write 権限を設定した
  • dependabot.yml をコピーした
  • package-ecosystem(npm/pip など)を更新した
  • dependabot.yml でレビュアーを設定した

テスト:

  • まずフィーチャーブランチにプッシュした(main ではない)
  • CI が正常に実行されることを確認した
  • Actions タブでエラーがないか確認した
  • YAML 構文をローカルで検証した
  • シークレットへのアクセスをテストした(該当する場合)

ドキュメント:

  • README.md にバッジを追加した(任意)
  • README に必要なシークレットを記載した
  • CONTRIBUTING.md を更新した(オープンソースの場合)

質問や問題がある場合

  1. 18 個すべてのエラーについては references/common-errors.md を確認してください
  2. ワークフロー YAML が有効か確認してください:yamllint .github/workflows/*.yml
  3. GitHub Actions タブで詳細なエラーメッセージを確認してください
  4. 公式ドキュメントを確認してください:https://docs.github.com/en/actions
  5. シークレットが設定されていることを確認してください:gh secret list

フェーズ 1 完了 - コアテンプレートとドキュメントの準備ができました
フェーズ 2~4 は保留中 - 高度なワークフロー、スクリプト、追加ガイド


最終更新日:2025-11-06
バージョン:1.0.0
ステータス:本番環境で利用可能(フェーズ 1 完了)

コメント