違い
最初にまとめ。
CI・・・
pushしたあとに「ビルド」「テスト」を自動で行う手法のこと
CD・・・
pushしたあとに「ビルド」「テスト」を行い、2つが成功したら自動で「デプロイ」まで行う手法のこと
もっと詳しく違い
違いは以下のとおり。
- CI(Continuous Integration):継続的インテグレーション
- ソースコードがGitHubなどのリモートリポジトリにpushされた際に「ビルド」と「テスト」を自動で実行して、想定どおりに動作するか自動でチェックする手法のこと。
- 「ビルド」というのは、新たに追加・変更したソースコードに合わせて使用するライブラリをダウンロードしてきたり、たくさんあるソースコードを1つにまとめたり(webpack)、旧環境でも動くようなソースコードに変換したりすること(Babal)。
- 「テスト」というのは、事前に「この関数にこういう値を突っ込んだらこういう値を返すべき」みたいな条件をいくつか作っておいて、「すべての条件がOKだったら正常に動いてるということだよね」みたいなのを担保する方法。
- CD(Continuous DeliberyまたはDeployment):継続的デリバリー(またはデプロイ)
- CIの拡張版のようなもの。
- CDでは、ビルドとテストが成功した後に、さらにデプロイまで行う
旧来の方法だと
- ローカル環境で開発する
- 本番サーバーにて以下のような作業をする
- ソースコードをFTPなどでサーバーにアップロードする
- ビルドする
- 動かす
- 「ちゃんと動くかなー?」とブラウザなどで手動でポチポチしてテストする
- GitHubなどにpushする
- リリース作業完了
みたいな作業をすべて手動でしないといけないけど
CIを使えば
- ローカル環境で開発する
- GitHubなどにpushする
- pushするだけで「ビルド」と「テスト」が自動で行われる(CI)
- 本番サーバーにソースコードをFTPなどで手動アップロードする
- 動かす
- リリース作業完了
みたいに簡略化できる。
CDなら更に
- ローカル環境で開発する
- GitHubなどにpushする
- pushするだけで「ビルド」と「テスト」が自動で行われ、この2つがOKなら本番サーバーにソースコードのアップロードまで行われる(CD)
- 動かす
- リリース作業完了
まで簡略化できる。
・・・みたいな感じ。
CI/CDツール
実際のCI/CDツールとしては以下のようなものがある。
- クラウドで動作するタイプ:
- 自前のサーバーにインストールするタイプ:
おわり
コメント