CI/CDパイプライン【CI/CD pipeline】
概要

従来のソフトウェア開発では、コード変更時のビルドやテスト、デプロイ(本番環境への展開)などの作業を手動で行うことが一般的だった。複数の開発者が同時に作業する環境では、コードの統合時に競合が発生したり、テストが後回しになって問題の発見が遅れたりするケースが生じやすかった。CI/CDパイプラインはこうした問題を緩和するために、一連の作業を専用のツールを用いて自動的に実施する仕組みである。
「CI」(Continuous Integration)は開発者が作成したプログラムの変更を頻繁に統合し、そのたびに自動ビルドや自動テストを実行する考え方である。複数人で開発している場合でも、変更同士の衝突や不具合を早い段階で発見しやすくなる。「CD」(Continuous DeliveryまたはContinuous Deployment)は本番公開可能な状態まで自動的に準備すること(delivery)、または、そのまま本番環境への反映まで自動実行すること(deployment)を指す。
パイプラインとは、こうした工程を順番につないだ処理の流れであり、ソースコードの更新を起点に、依存関係の取得、コンパイル、ビルド、静的解析、単体テスト、結合テスト、成果物の作成、配布先への配置などを段階的に進める。各段階には成功や失敗の条件が設定され、途中で問題が見つかれば処理を止めて通知する。品質を一定水準に保ちつつ、手動作業による設定漏れや反映ミスを減らすことができる。
CI/CDパイプラインは「DevOps」や「アジャイル開発」などの手法と相性がよく、変更を小さな単位で繰り返し投入する開発体制を支える基盤として使われる。代表的な構成要素には、ソースコード管理システム(バージョン管理システム)、ビルドツール、自動テストツール、コンテナ技術、デプロイ管理ツールなどがある。単に自動化するだけでは誤った変更を速く配布してしまう危険が生じるため、テスト内容や承認手順、監視体制を適切に設計する必要がある。