インフラ

GitHub Actionsで構築するCI/CDパイプラインの設計と実装

GitHub Actionsを使ったCI/CDパイプラインの構築方法を、テスト自動化からデプロイまで実践的に解説します。

Papapapapa
CI/CDGitHub ActionsDevOps

CI/CDの重要性

継続的インテグレーション/デリバリー(CI/CD)は、ソフトウェア品質の維持と迅速なリリースの両立に不可欠です。当社ではGitHub Actionsを標準のCI/CDプラットフォームとして採用しています。

パイプラインの基本設計

効果的なパイプラインは、以下のステージで構成します。

  1. Lint & Format Check — コードスタイルの統一
  2. Unit Test — ロジックの検証
  3. Build — ビルドの成功確認
  4. Integration Test — 結合テスト
  5. Deploy — ステージング/本番デプロイ
name: CI/CD Pipeline
on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

jobs:
  lint:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
      - run: npm ci
      - run: npm run lint

  test:
    needs: lint
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
      - run: npm ci
      - run: npm test

キャッシュ戦略

ビルド時間の短縮にはキャッシュが効果的です。actions/cacheを使い、node_modulesやビルドキャッシュを永続化します。当社のプロジェクトでは、キャッシュ導入によりCIの実行時間を約60%短縮しました。

ブランチ戦略との連携

PRベースの開発フローでは、以下のルールが効果的です。

  • PRへのpush: Lint + Test + Build を実行
  • mainへのマージ: ステージング環境へ自動デプロイ
  • タグの作成: 本番環境へデプロイ

Environment Protection Ruleを設定し、本番デプロイには承認を必須とすることで、安全なリリースフローを実現します。

セキュリティの考慮

Secretsの管理には GitHub Environments を活用し、環境ごとにアクセス可能なシークレットを制限します。また、依存パッケージの脆弱性スキャンをパイプラインに組み込むことで、セキュリティリスクを早期に検知できます。

CI/CDは一度構築して終わりではなく、チームの成長に合わせて継続的に改善していくことが重要です。

この記事をシェア

関連記事