CIとCDの違い

違い

最初にまとめ。

CI・・・
pushしたあとに「ビルド」「テスト」を自動で行う手法のこと

CD・・・
pushしたあとに「ビルド」「テスト」を行い、2つが成功したら自動で「デプロイ」まで行う手法のこと

もっと詳しく違い

違いは以下のとおり。

  • CI(Continuous Integration):継続的インテグレーション
    • ソースコードがGitHubなどのリモートリポジトリにpushされた際に「ビルド」と「テスト」を自動で実行して、想定どおりに動作するか自動でチェックする手法のこと。
    • 「ビルド」というのは、新たに追加・変更したソースコードに合わせて使用するライブラリをダウンロードしてきたり、たくさんあるソースコードを1つにまとめたり(webpack)、旧環境でも動くようなソースコードに変換したりすること(Babal)。
    • 「テスト」というのは、事前に「この関数にこういう値を突っ込んだらこういう値を返すべき」みたいな条件をいくつか作っておいて、「すべての条件がOKだったら正常に動いてるということだよね」みたいなのを担保する方法。
  • CD(Continuous DeliberyまたはDeployment):継続的デリバリー(またはデプロイ)
    • CIの拡張版のようなもの。
    • CDでは、ビルドとテストが成功した後に、さらにデプロイまで行う

 

旧来の方法だと

  1. ローカル環境で開発する
  2. 本番サーバーにて以下のような作業をする
    1. ソースコードをFTPなどでサーバーにアップロードする
    2. ビルドする
    3. 動かす
    4. 「ちゃんと動くかなー?」とブラウザなどで手動でポチポチしてテストする
  3. GitHubなどにpushする
  4. リリース作業完了

みたいな作業をすべて手動でしないといけないけど

 

CIを使えば

  1. ローカル環境で開発する
  2. GitHubなどにpushする
    • pushするだけで「ビルド」と「テスト」が自動で行われる(CI)
  3. 本番サーバーにソースコードをFTPなどで手動アップロードする
  4. 動かす
  5. リリース作業完了

みたいに簡略化できる。

 

CDなら更に

  1. ローカル環境で開発する
  2. GitHubなどにpushする
    • pushするだけで「ビルド」と「テスト」が自動で行われ、この2つがOKなら本番サーバーにソースコードのアップロードまで行われる(CD)
  3. 動かす
  4. リリース作業完了

まで簡略化できる。

・・・みたいな感じ。

CI/CDツール

実際のCI/CDツールとしては以下のようなものがある。

circleci

▲CircleCIの画面。

 

おわり

CI/CD
スポンサーリンク
この記事を書いた人
penpen

1991生まれ。WEBエンジニア。

技術スタック:TypeScript/Next.js/Express/Docker/AWS

フォローする
フォローする

コメント

タイトルとURLをコピーしました