CI/CDとは

CI(継続的インテグレーション)は、コードの変更をリポジトリにマージするたびに自動でビルド・テストを実行する仕組みです。CD(継続的デリバリー/デプロイ)は、テストを通過したコードを自動で本番環境にデプロイします。

GitHub Actionsの基本構造

name: CI/CD Pipeline

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Set up Python
        uses: actions/setup-python@v4
        with:
          python-version: "3.11"
      - name: Install dependencies
        run: pip install -r requirements.txt
      - name: Run tests
        run: pytest --cov=src tests/
      - name: Upload coverage
        uses: codecov/codecov-action@v3

主要CI/CDサービスの比較

サービス 特徴 無料枠
GitHub Actions GitHubと完全統合 月2,000分
GitLab CI 自己ホスト可能 400分/月
CircleCI 設定が柔軟 6,000クレジット/月
Jenkins 完全無料・カスタマイズ自由 自己ホストのみ

効果的なCIパイプラインの設計原則

  1. フェイルファスト:最も速いテストを最初に実行し、早期にフィードバック
  2. 並列実行:テストスイートを並列実行して総実行時間を短縮
  3. キャッシュ活用:依存関係のキャッシュで毎回のインストールを省略
  4. 環境の一貫性:Dockerコンテナで実行環境を統一
  5. シークレット管理:APIキーはGitHub Secretsに保存し、コードに書かない

デプロイフローの例(Blue/Green Deployment)

  deploy:
    needs: test
    if: github.ref == 'refs/heads/main'
    steps:
      - name: Deploy to production
        run: |
          aws ecs update-service             --cluster prod             --service my-app             --force-new-deployment

CI/CDパイプラインは「開発者が安心してコードを変更できる安全網」です。一度整備すれば長期的な開発速度と品質が大幅に向上します。