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ワークフローの設定を解説します。
| Step | 作業 |
|---|---|
| 1 | VercelプロジェクトでGitHub自動デプロイを無効化(手動管理) |
| 2 | VERCEL_TOKEN / VERCEL_ORG_ID / VERCEL_PROJECT_ID を GitHub Secrets に登録 |
| 3 | main へのpushで deploy-production ジョブを実行 |
| 4 | 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で更新できます。