LoginSignup
1
2

More than 1 year has passed since last update.

AWS (CodePipeline CodeCommit CodeBuild CodeDeploy) をざっくり理解

Posted at

概要

CodePipeline CodeCommit CodeBuild CodeDeploy を用いたデプロイの流れをざっくり解説しました。
細かい設定や、ファイルへの記述は最後に書いていないです。

参考にさせていただいた講座および引用させていただいた画像

Techpit 「Laravel × CircleCI × AWSで学ぶCI/CD」  shonansurvivors様 著

基盤となる図

スクリーンショット 2021-10-12 0.26.10.png

1~7まではローカルからCircleCIを通して、featureブランチでテストをパスした後masterにマージ。そしてテストを行っている。
その後からCode〇〇を用いたデプロイの開始である。

Code〇〇のそれぞれの役割

CodePipeline

デプロイをするためのパイプラインを文字通り作っている。以下の図のようにCodeCommit CodeBuild CodeDeploy をこのパイプラインに当てはめる。
これがデプロイするためのパイプライン(CodePipeline)である。

下記の図で上からCodeCommit CodeBuild CodeDeploy の順に並ぶ。

CodePipeline を作成する際にCodeCommit CodeBuild CodeDeploy という3つのパーツを当てはめる。

また、CodePipelineを作成するときにCodePipeline用のS3バケットが自動で作成される。

27981f7d-8b5b-4f56-936e-f92b0e32d187.png

Codecommit

CodeCommitとは、AWS上に存在するGitリポジトリのサービス(AWS版のGitHubのようなもの)。

CodeCommitに最新のmasterブランチがプッシュされると、そのコードがS3にコピーされ(図の9)、これをCodeBuildが取得します(図の10)。

下記のようにリポジトリが作成される。
スクリーンショット 2021-10-12 1.26.23.png

Codebuild

CodebuildはS3から先程コピーされたソースコードを取得。
テスト、パッケージのインストールを実行して、すぐにデプロイできるアーティファクトを生成する役割(図の10,11,12)。

例としては、yarn install yarn test rake assets:precompile等を実行してデプロイできる準備を行う。

テストをここで行うこともできるので、CircleCIでのテストを省略可能。

行いたいコマンドをbuildspec.yml に記述しアプリケーションのトップディレクトリに配置する。(詳しくは後)

CodeDeploy

デプロイを指示する役割(図の13)。S3からビルド後のファイル群を取り出し、EC2にデプロイします(図の14)。
また、EC2からRDSのDBに対してマイグレーションを実行します(図の15)

appspec.yml というファイルをアプリケーションのトップディレクトリに配置することによってデプロイする際のコマンド(rails db:migrate など)を指定することができる(後に詳しく)

全体の流れ

全体の流れとしては

① CircleCIでのテストをパスしたソースコードをCodeCommitにpush
② そのソースコードをCodeCommitからS3にコピー
③ CodebuildがS3からソースコードを取得し、デプロイの準備のためのコマンドを実行
④ CodeDeployがデプロイを指示。その際に、データベースのマイグレーションなど行いたいコマンドを実行。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2