GitHub ActionsとCI/CDの基礎概念
CI/CD(継続的インテグレーション/継続的デリバリー)は、コードの変更をトリガーとして自動的にテスト・ビルド・デプロイを行う開発プラクティスです。GitHub Actionsは2019年にGitHubが提供を開始したCI/CDサービスで、GitHubリポジトリとのシームレスな統合・無料枠の充実・大量のサードパーティActionにより、2025年現在最も広く使われているCI/CDツールです。
GitHub ActionsのCI/CDを導入するメリット:
・コードのプッシュ時に自動テストが実行されバグを早期発見できる
・手動デプロイのミス・忘れがなくなる
・PR時の自動チェックでコードレビューの品質が向上する
・インフラ設定をコードとして管理できる(GitOps)
GitHub Actionsの基本概念とYAML構文
GitHub Actionsの主要な概念を解説します。
ワークフロー(Workflow):.github/workflows/ディレクトリに置くYAMLファイルで定義されます。
トリガー(on):ワークフローを実行するタイミングです。
・push:ブランチへのプッシュ
・pull_request:PR作成・更新時
・schedule:cronで定期実行
・workflow_dispatch:手動実行
・release:リリース公開時
ジョブ(jobs):並列または順次実行できる処理の単位です。
ステップ(steps):ジョブ内で実行する各コマンド・Action。
アクション(uses):再利用可能なコンポーネント。GitHub MarketplaceからActionsを使えます(actions/checkout・actions/setup-node等)。
基本的なCI(テスト・Lint)ワークフローの実装
PRのたびにテストとLintを自動実行するCIワークフローの例を解説します。
基本的なNode.js CIワークフロー:
name: CI
on: pull_request
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm'
- run: npm ci
- run: npm run lint
- run: npm run type-check
- run: npm test
キャッシュの活用:
setup-nodeのcache: 'npm'でnpm installのキャッシュが有効になり、2回目以降の実行が大幅に速くなります。
CDワークフロー|Vercelへの自動デプロイ
mainブランチへのマージ時にVercelに自動デプロイするCDワークフローの設定を解説します。
Vercel + GitHub Actionsの連携方法:
①Vercelのプロジェクト設定でGitHubの自動デプロイを無効化(手動管理するため)
②VERCEL_TOKEN・VERCEL_ORG_ID・VERCEL_PROJECT_IDをGitHubのSecretsに追加
③mainブランチへのpushをトリガーにdeploy-productionジョブを実行
④プレビューデプロイはPR時にdeploy-previewジョブで実行
高度なワークフロー|マトリックス・キャッシュ・セキュリティ
より高度なGitHub Actionsの活用テクニックを紹介します。
マトリックス戦略(複数環境でのテスト):
strategy.matrix を使うことで、Node.js 18/20/22など複数バージョン・OS(ubuntu/windows/macos)での並列テストが簡単に設定できます。
Secretsの管理:
APIキー・デプロイトークンなどの機密情報はGitHubのRepository Settings→Secretsに登録し、${{ secrets.SECRET_NAME }}でワークフローから参照します。絶対にYAMLファイルに直書きしないでください。
依存関係の脆弱性スキャン:
npm auditやDependabotを使って依存パッケージの脆弱性を定期的にスキャンします。GitHub Dependabotを有効化することで、脆弱性のある依存関係を自動的にPRで更新できます。