はじめに
最近、仕事でCI/CDを担当することになったため、備忘録を残そうとこの記事を書きました。CI/CDについて名前を聞いたことがあるレベルだったので、まずは概念の理解から。
CI/CDとは
CI/CDとは、開発のステージに自動化を取り入れて、アプリケーションを提供する頻度を高める手法です。
CI/CDのコンセプトは継続的インテグレーション、継続的デリバリー、継続的デプロイメントです。
ちょっと何言ってるのか分からないので各コンセプトの説明をします。
ちなみに「CI」が継続的インテグレーション、「CD」が継続的デリバリー、継続的デプロイメントを指します。
継続的インテグレーション
今どきのアプリケーションはgitを用いて複数人のメンバで開発します。当然各機能に対して、同時に開発を進め、ブランチにマージしますよね。
マージ後も問題なくアプリケーションが動作することを確認して、マージを許可するという作業に時間が取られ、開発のペースダウンにつながります。
そこで、継続的インテグレーション(CI)は、開発者による変更がアプリケーションにマージされると、自動的にビルドし、テストを実行し、変更を検証します。
ビルド~単体テスト、結合テストを自動化します。
このような自動サイクルを回すことにより、バグを素早く容易に発見し、修正することができます。
継続的デリバリー
継続的デリバリーでは、検証されたコードのリポジトリへのリリースを自動化します。
簡単に言うと、本番環境にデプロイできるコードベースを常に保持します。
コード変更のマージから本番環境対応のビルドのデリバリーまで、すべてのステージでテストの自動化とコードリリースの自動化が実施され、プロセスの終了時には、本番環境に素早く簡単にデプロイできます。
継続的デプロイメント
本番環境対応のビルドをコードリポジトリへ自動的にリリースして、継続的デリバリーの延長として、継続的デプロイメントはアプリケーションを本番環境に自動的にリリースします。
簡単に言うと、上記フェーズでの自動テストをクリアしたら、自動的に本番環境にデプロイするよってことです。
最後に
自分のお勉強がてら、メモベースでまとめただけですので、分かりづらくて、すいません。
参考にしたサイトのリンクを載せておきます。
CI/CD とは(redhat)