CI/CD レッスン2

パイプライン設計

ビルド・テスト・デプロイの各ステージを組み立てるCI/CDパイプラインの設計方法を学ぶ

パイプラインの基本構造

CI/CDパイプラインは、コードの変更から本番へのリリースまでを一連のステージとして自動化したものです。 各ステージは前段階が成功して初めて実行され、途中で失敗すればそこで止まります。

Build
Unit Test
Integration Test
Deploy Staging
E2E Test
Deploy Production

各ステージの役割

1. Build(ビルド)

依存関係のインストール・コンパイル・型チェックなど、実行可能な成果物を作る段階。

2. Test(テスト)

単体テスト→結合テストの順に、テストピラミッドに沿って軽いものから実行する。

3. Deploy Staging(ステージング配置)

本番に近い検証環境へ自動デプロイし、E2Eテストなど重い検証を行う。

4. Deploy Production(本番配置)

承認を経て、あるいは自動で本番環境へリリースする最終ステージ。

ステージ構成の実装例

# ① .github/workflows/pipeline.yml
name: Pipeline
on:
  push:
    branches: [main]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 20
      - run: npm ci
      - run: npm run build

  test:
    needs: build
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: npm ci
      - run: npm run test:unit
      - run: npm run test:integration

  deploy-staging:
    needs: test
    runs-on: ubuntu-latest
    steps:
      - run: echo "ステージング環境へデプロイ"

  deploy-production:
    needs: deploy-staging
    runs-on: ubuntu-latest
    environment: production # 承認フローを挟める
    steps:
      - run: echo "本番環境へデプロイ"

needsで前段階への依存を明示することで、 「ビルドが通らなければテストしない」「テストが通らなければデプロイしない」という 安全なゲートを構築できます。

設計時に意識すべきこと

  • • 「速く失敗する(fail fast)」原則で、軽くて速いチェックを先に配置する
  • • 独立したテストは並列実行し、パイプライン全体の待ち時間を短縮する
  • • 本番デプロイの前には手動承認や自動ロールバックの仕組みを用意する
  • • パイプライン自体の設定もコードとしてリポジトリで管理し、レビュー対象にする

ポイント

  • • パイプラインはビルド→テスト→デプロイの順にステージを積み上げる
  • • 前段階の失敗は後段階に進ませない(fail fast)
  • • 軽いチェックを先に、重い検証を後に配置して時間を節約する
  • • パイプライン設定自体もコードとしてレビュー・バージョン管理する

確認クイズ

1 / 3

CI/CDパイプラインの一般的なステージ順序として適切なものはどれか?