CI/CD
コードの変更を自動的にビルド・テスト・デプロイするパイプライン
CI/CD とは
CI (Continuous Integration) はコードの変更を頻繁に統合し自動テストする手法、CD (Continuous Delivery/Deployment) はテスト済みのコードを自動的にデプロイする手法である。
CI vs CD
CI と CD の違いを以下にまとめる。
| 概念 | 説明 |
|---|---|
| CI (継続的インテグレーション) | コミットごとに自動ビルド・テスト |
| CD (継続的デリバリー) | 本番デプロイ可能な状態を常に維持 (手動承認) |
| CD (継続的デプロイメント) | テスト通過で自動的に本番デプロイ |
パイプラインの例
パイプラインの例を以下に示す。
# GitHub Actions
name: CI/CD
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with: { node-version: 22, cache: npm }
- run: npm ci
- run: npm run lint
- run: npm run typecheck
- run: npm test
deploy:
needs: test
if: github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
steps:
- uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: ${{ secrets.AWS_ROLE_ARN }}
aws-region: ap-northeast-1
- run: sam build && sam deploy --no-confirm-changeset
CI/CD のメリット
コミットごとにテストが実行されるため、バグを早期に検出できる。デプロイが自動化されて手動作業が排除され、リリース頻度が向上する (DORA メトリクスの改善)。毎回同じ手順でデプロイされるため一貫性も担保される。
AWS での CI/CD
AWS での CI/CD を以下にまとめる。
| ツール | 用途 |
|---|---|
| GitHub Actions | GitHub 統合、汎用 |
| CodePipeline + CodeBuild | AWS ネイティブ |
| SAM Pipeline | サーバーレス CI/CD |
CI/CD のベストプラクティス
CI は 5 分以内に完了させ、ブランチ保護で CI 通過を必須にする。手動テストに依存せず自動テストを充実させ、アクセスキーではなく OIDC 認証を使う。コードは同一にして環境変数で設定を切り替える。
SAM でのデプロイ
SAM でのデプロイの例を示す。
sam build && sam deploy --no-confirm-changeset \
--stack-name myapp-dev --parameter-overrides Environment=dev
現場での応用を知るには関連書籍も役立つ。
この記事は役に立ちましたか?
関連用語
GitHub Actions
GitHub に統合された CI/CD プラットフォームで、ワークフローを YAML で定義して自動実行する
CodePipeline
AWS のマネージド CI/CD サービスで、ソースからデプロイまでのパイプラインを自動化する
CI
Continuous Integration の略で、コードの変更を頻繁に統合し自動テストで品質を保証する手法
DORA メトリクス
ソフトウェアデリバリーのパフォーマンスを測定する 4 つの指標
DevOps
開発チームと運用チームの協働を促進し、ソフトウェアのデリバリーと品質を継続的に改善する文化・プラクティスの総称
GitOps
Git リポジトリを唯一の正として、インフラとアプリケーションの状態を宣言的に管理する運用手法
関連する記事
テスト本ガイド - テスト設計を学べる技術書の選び方
テストの書き方からテスト戦略まで学べる技術書の選び方を紹介。テストピラミッド、TDD の正しい読み方、テストの ROI の考え方を解説します。
バグを生むのは知識不足ではなく想像力不足である
バグの多くは、コードを書いた時点で「こういうケースもありうる」と想像できなかったことが原因です。想像力を鍛える読書法と、エッジケースへの感度を高める方法を解説します。
「動くコード」と「良いコード」の間にある本
コードが動くようになった後、次に何を学べばよいのか。「動くコード」を「良いコード」に変えるために必要な知識と、それを効率的に学べる本の選び方を解説します。