ビルド・テスト・デプロイを自動化するパイプラインを提供するツール。
CI/CDツールとは、CI(継続的インテグレーション)と CD(継続的デリバリ・デプロイ)を自動化するツールです。ビルド・テスト・デプロイ(=本番環境へ反映すること)といった作業を、人の手を介さず自動で実行します。
身近な例で考えると、工場のベルトコンベア(生産ライン)に似ています。材料を投入すると、組み立て・検査・出荷が自動で順に進みます。CI/CD も同じように、コードを投入すれば「翻訳して・検査して・届ける」までを自動で流してくれます。
上の図解は、開発者がコードを push すると、ソース取得 → ビルド → 自動テスト → 自動デプロイの一連の流れ(パイプライン)が自動で動く様子を表しています。手作業のミスを減らし、リリースを速くすることが狙いです。
CI/CDの「パイプライン」とは、複数の作業を一連の流れとして自動で実行する仕組みです。代表的な構成は次のとおりです。
・ソース取得:バージョン管理から最新のコードを取り込む
・ビルド:ソースコードを実行可能な形(機械語)に変換する
・自動テスト:用意したテストを自動実行し、品質を検査する
・デプロイ:テストに成功したら、検証環境や本番環境へ自動で反映する
重要なのは、コミットのたびにこのパイプラインを繰り返し回す点です。小さな変更ごとに毎回ビルドとテストを行うため、不具合があってもすぐに気づけます。問題のある状態が長く放置されることを防げるわけです。
図解で赤い点線で示したように、テストに失敗するとパイプラインは止まり、デプロイは行われません。開発者には失敗が通知されます。これにより、検査に通っていない不完全なプログラムが本番に出てしまう事故を防げます。
実際によく使われている代表的なCI/CDツールには、次のものがあります。
・Jenkins:オープンソースの定番。自由度が高く、さまざまな環境で使える
・GitHub Actions:GitHub に組み込まれた自動化機能。push をきっかけに動かせる
・GitLab CI/CD:GitLab に統合されたパイプライン機能
・CircleCI:クラウドで手軽に使えるCI/CDサービス
いずれのツールも、目的は同じく「手作業のミスを減らし、リリースを速くする」ことです。人が毎回手でビルドやテスト、デプロイを行うと、抜け漏れや操作ミスが起こりがちですが、自動化すればその心配がなくなります。
バージョン管理システム(Git など)と組み合わせて使う点もおさえておきましょう。コードを push したことをきっかけにパイプラインが動き出す、という連携が CI/CD の基本的な使い方です。レジで会計すると自動でレシートが出る、というように「ある操作をきっかけに後続処理が自動で走る」イメージです。
なぜCI/CDが必要なのか。それは、手作業には「抜け漏れ」と「一貫性のなさ」という2つの問題があるからです。
手作業で毎回ビルド・テスト・デプロイを行うと、こんな問題が起こりやすくなります。
・テストを飛ばしてしまった:急いでいたときにうっかり省略してしまう
・デプロイの手順を間違えた:担当者が違うと、やり方がバラバラになることがある
・問題に気づくのが遅れた:手でテストを実行しないと、バグがしばらく気づかれないことがある
CI/CDはこれを自動化することで、「誰がやっても、いつやっても、同じ手順で正確に実行される」状態を作ります。コードを push すると自動でパイプラインが動くので、人が意識しなくてもテストやデプロイが確実に行われます。これが「継続的」(Continuous)という言葉の意味です。1回だけではなく、毎回コミットのたびに続けて自動で回し続けるということです。
| CI(継続的インテグレーション) | CD(継続的デリバリ/デプロイ) | |
|---|---|---|
| 正式名称 | Continuous Integration | Continuous Delivery / Deployment |
| 意味 | 継続的な統合 | 継続的な配信 / 展開 |
| 何をするか | ビルド・テストを自動実行 | テスト成功後に自動でデプロイ |
| いつ動くか | コミット・push のたびに毎回 | CIが成功したあとに続けて |
| 目的 | 不具合を早く発見して止める | 手動なしで本番環境へ届ける |
CI(継続的インテグレーション)は「ビルドとテストを自動で繰り返し行い、問題を早く見つける」仕組みです。一方、CD(継続的デリバリ・デプロイ)は「CIが通ったコードを自動で本番環境に届ける」仕組みです。
2つをまとめてCI/CDと呼ぶことが多く、セットで使われます。料理に例えると、CIが「作るたびに味見して問題がないか確かめる(品質チェック)」で、CDが「合格した料理を自動でお客さんのテーブルに運ぶ(配膳)」です。CI単体でも使えますが、CDまで自動化することで、コードを書いてから本番に届くまでの時間をさらに短くできます。