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パイプラインの設計原則
- フェイルファスト:最も速いテストを最初に実行し、早期にフィードバック
- 並列実行:テストスイートを並列実行して総実行時間を短縮
- キャッシュ活用:依存関係のキャッシュで毎回のインストールを省略
- 環境の一貫性:Dockerコンテナで実行環境を統一
- シークレット管理: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パイプラインは「開発者が安心してコードを変更できる安全網」です。一度整備すれば長期的な開発速度と品質が大幅に向上します。




