CI/CDパイプライン しーあいしーでぃーぱいぷらいん
継続的インテグレーション継続的デリバリー自動化DevOpsGitHub Actionsデプロイ自動化
CI/CDパイプラインって何?
簡単に言うとこんな感じ!
「コードを書いたら自動でテストして、問題なければ自動でサーバーに届ける」流れを仕組み化したのがCI/CDパイプラインだよ。人手でやっていたビルド・テスト・デプロイを自動の組み立てラインにしたイメージ!ミスが減って、リリースが速くなるんだ。
CI/CDパイプラインとは
CI/CDパイプラインとは、ソフトウェアの変更が開発者のコミットから本番環境へ届くまでの一連のプロセスを自動化した仕組みです。「CI(Continuous Integration:継続的インテグレーション)」と「CD(Continuous Delivery/Deployment:継続的デリバリー/デプロイ)」の2つのフェーズから構成されます。
CI(継続的インテグレーション)は、開発者がコードをプッシュするたびに自動でビルド・テストを実行し、問題を即座に検出します。複数人の変更を頻繁に統合することで、「後で大量のバグがまとめて発覚する」リスクを防ぎます。
CD(継続的デリバリー)は、CIを通過したコードをステージング環境・本番環境へ自動でデプロイします。CDには「Continuous Delivery(承認ゲートで人間が最終GOを出す)」と「Continuous Deployment(承認なしで自動的に本番へ)」の2種類があります。どちらも「デプロイ手順を自動化・標準化することで人為的ミスをなくす」ことが目的です。
パイプラインの典型的なステージ
| ステージ | 内容 | 担当ツール例 |
|---|---|---|
| ソース | Gitへのプッシュ・PRマージをトリガーに起動 | GitHub・GitLab |
| ビルド | ソースコードをコンパイル・コンテナイメージをビルド | Docker、Maven、Gradle |
| テスト | ユニットテスト・統合テスト・セキュリティスキャン | Jest・Pytest・Trivy |
| 成果物の保存 | コンテナイメージをレジストリにプッシュ | ECR・Docker Hub |
| ステージングデプロイ | ステージング環境へ自動デプロイし動作確認 | Kubernetes・Helm |
| 承認ゲート | 本番デプロイ前に人間のレビュー・承認(任意) | GitHub Environments |
| 本番デプロイ | 本番環境へデプロイ。ブルーグリーン・カナリア等の戦略を使用 | Argo CD・Flux CD |
歴史と背景
- 2001年:Martin Fowlerがによる「Continuous Integration」論文がCI概念の礎に
- 2010年:Jez HumbleとDavid Farleyの書籍「Continuous Delivery」でCDが体系化
- 2011年:Jenkins 1.0がOSS公開。CI/CDのデファクトツールとして急速に普及
- 2014年:GitLab CI・Travis CIが登場。設定ファイルベースのパイプライン定義が一般化
- 2018年:GitHub Actionsがベータ公開。GitHubと統合されたCI/CDが開発者に普及
- 2022年〜:GitOpsの台頭によりCI(ビルド)とCD(デプロイ)を分離するアーキテクチャが標準化
CI/CDパイプラインのフロー図
関連する規格・RFC
| 規格・RFC番号 | 内容 |
|---|---|
| DORA Metrics | CI/CDの成熟度を測る4つの指標(デプロイ頻度・変更リードタイム・障害率・復旧時間) |
| OpenTelemetry | CIパイプラインのテレメトリを標準化するための仕様 |
関連用語
- GitOps — GitをCD(デプロイ)の真実の源とする運用手法。CI/CDの発展形
- Docker — CIパイプラインでビルドするコンテナイメージの実行基盤
- Kubernetes — CDパイプラインのデプロイターゲット
- ブルーグリーンデプロイメント — CDパイプラインで採用されるゼロダウンタイムデプロイ戦略
- カナリアリリース — 段階的にトラフィックを切り替えるデプロイ戦略
- IaC(Infrastructure as Code) — インフラ変更もCI/CDパイプラインで自動適用する
- SRE — CI/CDのメトリクスをDORA指標で計測し信頼性向上を担うエンジニアリング手法