GitHub Actionsは、GitHubに統合されたCI/CDプラットフォームです。コードのプッシュやPull Requestをトリガーに、テスト・ビルド・デプロイを自動化できます。本記事では、実務で即使えるワークフローの書き方を解説します。
GitHub Actionsの基本概念
- ワークフロー(Workflow):自動化のプロセス全体。YAMLファイルで定義
- ジョブ(Job):ワークフロー内の独立した処理単位
- ステップ(Step):ジョブ内の個々のタスク
- アクション(Action):ステップで使用する再利用可能な処理
- ランナー(Runner):ワークフローを実行するサーバー環境
- トリガー(Trigger):ワークフローを起動するイベント
主要なトリガーイベント一覧
| トリガー | 説明 | 使用場面 |
|---|---|---|
| push | コードプッシュ時 | CI実行、ブランチ保護 |
| pull_request | PR作成・更新時 | コードレビュー前のチェック |
| release | リリース作成時 | 本番デプロイ |
| schedule | 定期実行 | 夜間テスト、依存関係更新 |
| workflow_dispatch | 手動実行 | 臨時のデプロイ、メンテナンス |
| workflow_call | 他のワークフローから呼び出し | 再利用可能なワークフロー |
実践:Node.js + PostgreSQLアプリのCI設定
以下は、Node.jsアプリとPostgreSQLを使ったプロジェクトのCI設定の完全サンプルです。
name: Node.js CI
on:
push:
branches: [main, develop]
pull_request:
branches: [main]
jobs:
test:
runs-on: ubuntu-latest
services:
postgres:
image: postgres:16-alpine
env:
POSTGRES_USER: testuser
POSTGRES_PASSWORD: testpass
POSTGRES_DB: testdb
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
- 5432:5432
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
cache: npm
- run: npm ci
- name: Run migrations
run: npm run db:migrate
env:
DATABASE_URL: postgresql://testuser:testpass@localhost:5432/testdb
- name: Run tests
run: npm test -- --coverage
env:
DATABASE_URL: postgresql://testuser:testpass@localhost:5432/testdb
NODE_ENV: test
- name: Upload coverage
uses: codecov/codecov-action@v4
Secretsの安全な管理方法
APIキー、パスワード、SSHキーなどの機密情報は、GitHubのSecretsに登録して環境変数として参照します。リポジトリの「Settings」→「Secrets and variables」→「Actions」から登録できます。
- ワークフロー内では
${{ secrets.SECRET_NAME }}で参照 - Environmentごとに異なるSecretsを設定可能(staging/production分離)
- Organization levelのSecretsも設定可能(複数リポジトリで共有)
- GitHub Environmentsで承認フローを設定できる
キャッシュ戦略でビルドを3倍高速化
actions/cacheを使うことで、npm installやDockerビルドの時間を大幅に削減できます。適切なキャッシュ設定で、ビルド時間を5分から1.5分に短縮した事例もあります。
GitHub Actionsのコスト最適化
- 無料枠の活用:パブリックリポジトリは無制限、プライベートは月2,000分
- self-hostedランナーの活用:自社サーバーを使えばコスト大幅削減
- 並列実行と条件実行:不要なジョブをスキップして無駄を省く
- matrix戦略:複数環境のテストを効率的に並列実行
まとめ:GitHub ActionsでDevOpsを自動化しよう
GitHub Actionsは設定が比較的シンプルで、GitHubとのネイティブ統合により高速にCI/CDを構築できます。本記事で紹介したサンプルをベースに、自分のプロジェクトに合わせてカスタマイズしてみてください。
CI/CDの自動化は最初の設定コストこそかかりますが、一度構築すれば開発者がテストやデプロイのことを気にせずコーディングに集中できる環境が整います。チーム開発での生産性向上効果は絶大です。