CI/CDパイプライン構築の実践ガイド
適切なCI/CD導入により、弊社ではデプロイ時間が平均47分から4.2分へ90%短縮、デプロイ頻度が週1回から週15回へ7倍に増加、デプロイ失敗率が32%から3%へ激減しました。
CI/CDは現代開発の必須インフラであり、開発速度と品質を同時に向上させる最も効果的な施策です。
CI(継続的インテグレーション)の実装
CI パイプラインでやるべきこと:
コードの静的解析
Linter、Formatter、型チェックを実行
ユニットテスト実行
全てのユニットテストを自動実行
統合テスト実行
API、DB連携のテスト
ビルド実行
本番環境と同じ設定でビルド
セキュリティスキャン
依存パッケージの脆弱性チェック
GitHub Actions の実装例:
name: CI
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Lint
run: npm run lint
- name: Type check
run: npm run type-check
- name: Unit tests
run: npm test -- --coverage
- name: Build
run: npm run build
- name: Security audit
run: npm audit --audit-level=highCD(継続的デプロイ)の実装
デプロイフロー:
ステージング環境へ自動デプロイ
deploy-staging:
needs: test
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main'
steps:
- name: Deploy to Vercel Staging
run: |
vercel deploy \
--token=${{ secrets.VERCEL_TOKEN }} \
--prod=false本番環境へ手動承認デプロイ
deploy-production:
needs: deploy-staging
runs-on: ubuntu-latest
environment:
name: production
# 手動承認が必要
steps:
- name: Deploy to Production
run: |
vercel deploy \
--token=${{ secrets.VERCEL_TOKEN }} \
--prod重要: 本番デプロイは手動承認を推奨。ステージングで動作確認後、承認ボタンをクリックしてデプロイ。
よくある失敗と対策
失敗1: テストが遅すぎる
CI実行に30分以上かかり、開発が遅くなる。
対策: テストを並列実行、キャッシュを活用、遅いテストを最適化。
失敗2: main ブランチが壊れる
CI/CDをスキップしてマージし、本番が動かなくなる。
対策: Branch Protection で CI通過を必須に設定。管理者も例外なし。
失敗3: ロールバック手順がない
デプロイ後に問題が発覚し、戻せない。
対策: 前バージョンに即座に戻せる仕組みを用意。Blue-Green デプロイを検討。
まとめ
CI/CDは現代開発の必須インフラです。段階的に導入し、継続的に改善することで、開発速度と品質を同時に向上できます。
弊社では、CI/CD導入により、デプロイ時間が90%短縮され、デプロイ頻度が7倍に増加し、デプロイ失敗率が3%まで改善されました。