違い
最初にまとめ。
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ツールとしては以下のようなものがある。
- クラウドで動作するタイプ:
 - 自前のサーバーにインストールするタイプ:
 

▲CircleCIの画面。
おわり
  
  
  
  
コメント