github-project-automation について
CI、Issueテンプレート、セキュリティスキャンを設定するリポジトリ管理者向けのGitHub自動化スキルです。フレームワーク別のワークフローテンプレートと設定ガイドで、よくある設定ミスを防ぎます。
主な機能
- 01複数スタック向けCIワークフローテンプレート
- 02Issue・PRテンプレート
- 03CodeQLセキュリティスキャン設定
- 04Dependabot依存関係更新設定
- 05Actionsのエラー回避ガイド
活用シーン
- 01ReactまたはNode.jsプロジェクトにCIを追加
- 02Pythonのマトリックステストを設定
- 03コードスキャンと依存関係更新を設定
- 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 つ選択):
ci-basic.yml- 汎用的なテスト/lint/ビルド(すべてのフレームワーク向け)ci-node.yml- マトリックステスト対応の Node.js(18、20、22)ci-python.yml- マトリックステスト対応の Python(3.10、3.11、3.12)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:プロジェクトに合わせてカスタマイズする
必要なカスタマイズ:
-
ユーザー名/メールアドレスを更新する:
# In issue templates assignees: - jezweb # ← Change to your GitHub username # In dependabot.yml reviewers: - "jezweb" # ← Change to your username -
言語を調整する(CodeQL):
# In security-codeql.yml matrix: language: ['javascript-typescript'] # ← Add your languages # Options: c-cpp, csharp, go, java-kotlin, python, ruby, swift -
パッケージマネージャーを更新する(Dependabot):
# In dependabot.yml - package-ecosystem: "npm" # ← Change if using yarn/pnpm/pip/etc -
デプロイ 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
公式ドキュメント
- GitHub Actions: https://docs.github.com/en/actions
- ワークフロー構文: https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions
- CodeQL: https://codeql.github.com/docs/
- Dependabot: https://docs.github.com/en/code-security/dependabot
- Issue テンプレート: https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests
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 が実行されない
解決策:
- ワークフローが
.github/workflows/にあることを確認してください(.github/workflow/ではありません) - YAML が有効であることを確認してください:
yamllint .github/workflows/*.yml - トリガーがブランチに合っていることを確認してください:
on: push: branches: [main] - ワークフローファイルがコミットされ、プッシュされていることを確認してください
- GitHub の Actions タブでエラーメッセージを確認してください
問題:CodeQL が「No code found」で失敗する
症状:CodeQL ワークフローは完了するものの、何も検出されない
解決策:
- コンパイルが必要な言語(Java、C++、C#)の場合は、ビルドステップを追加してください:
- name: Build project run: ./mvnw clean install - マトリックスで言語が正しいことを確認してください:
language: ['java-kotlin'] # Not just 'java' - CodeQL がその言語に対応していることを確認してください(ドキュメントを参照)
問題:ワークフローでシークレットを利用できない
症状:Secret not found または変数が空になる
解決策:
- リポジトリにシークレットが追加されていることを確認してください:
gh secret list - 構文で二重波括弧が使われていることを確認してください:
${{ secrets.NAME }} - シークレットでは大文字と小文字が区別されます(正確な名前を使用してください)
- フォークではシークレットを利用できません(セキュリティ上の理由)
問題:Dependabot の PR が何度も失敗する
症状:自動作成された PR が CI チェックに失敗する
解決策:
- CodeQL が Dependabot の PR でトリガーされることを確認してください:
on: push: branches: [dependabot/**] - ブランチ保護によってボットの PR がブロックされていないことを確認してください
- 更新された依存関係を使って、テストがローカルで成功することを確認してください
- Dependabot のログを確認してください:Settings → Security → Dependabot
問題:マトリックスビルドがすべて失敗する
症状:すべてのマトリックスジョブが同じエラーで失敗する
解決策:
- 変数の参照に
matrix.が含まれていることを確認してください:node-version: ${{ matrix.node-version }} # NOT ${{ node-version }} - マトリックスの値が有効であることを確認してください:
matrix: node-version: [18, 20, 22] # Valid LTS versions - すべての失敗を確認するには
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 を更新した(オープンソースの場合)
質問や問題がある場合
- 18 個すべてのエラーについては
references/common-errors.mdを確認してください - ワークフロー YAML が有効か確認してください:
yamllint .github/workflows/*.yml - GitHub Actions タブで詳細なエラーメッセージを確認してください
- 公式ドキュメントを確認してください:https://docs.github.com/en/actions
- シークレットが設定されていることを確認してください:
gh secret list
フェーズ 1 完了 - コアテンプレートとドキュメントの準備ができました
フェーズ 2~4 は保留中 - 高度なワークフロー、スクリプト、追加ガイド
最終更新日:2025-11-06
バージョン:1.0.0
ステータス:本番環境で利用可能(フェーズ 1 完了)