CodeBuild/CodeDeployをCodePipelineで繋げてデプロイを自動化する
はじめに
複数のアプリケーションを作っているとアプリケーションごとにビルド・デプロイ環境があると思います。
弊チームでは各アプリケーションごとにビルド・デプロイ環境がEC2だったりローカル環境だったりと異なり、個人によってはインストールされているバージョンが違うことによりビルド・デプロイに失敗することがあり、デプロイ作業が属人化しかけ問題に感じていました。
また、新しいメンバーが増えた際に環境を整えてもらう必要があります。
1度環境を整えてしまえば問題はありませんが、CodeBuildとCodeDeployをCodePipelineで繋げてデプロイを自動化しました。
CodeBuild
CodeBuildにbuildspec.ymlが必要になります。
buildspec.yml
CodeBuildがビルド時にどのように動作するかを記述したファイルになり、プログラムのルートディレクトリに配置します。
buildspec.ymlの書き方は、CodeBuild のビルド仕様に関するリファレンスを参考にしてみてください。
設定
ビルドプロジェクトを作成してみます。
プロジェクトを設定します。
ビルドするソースを選択します。
ビルドする環境を選択します。
AWSが用意したマネージド型イメージとDockerイメージを使うカスタムイメージを選択できます。
今回はマネージド型イメージを選択し、OS・ランタイム・イメージ・バージョンを選択します。
VPC内の特定のSubnet内でビルドしたい場合はVPC・Subnetを選択できます。VPCエンドポイントによる接続もできるようになります。
環境変数を渡すこともできます。
ビルドの仕様を選択します。
ビルドしたソースの出力先を選択します。
ビルドしたログをCloudWatchLogsに出力できます。
CodeDeploy
CodeDeployにはCodeDeploy Agentとappspec.ymlが必要になります。
CodeDeploy Agent
デプロイ対象のEC2インスタンスにCodeDeploy Agentをインストールされ、サービスが起動している必要があります。
###CodeDeploy Agentのインストール
# wget https://aws-codedeploy-ap-northeast-1.s3.amazonaws.com/latest/install
# chmod +x ./install
# ./install auto
###自動起動設定確認
# systemctl list-unit-files -t service | grep codedeploy-agent.service
codedeploy-agent.service enabled
appspec.yml
CodeDeployがデプロイ時にどのように動作するかを記述したファイルになり、プログラムのルートディレクトリに配置します。
appspec.ymlの書き方は、CodeDeploy AppSpec File リファレンスを参考にしてみてください。
設定
アプリケーションとデプロイグループを作成してみます。
まずアプリケーションを作成します。
デプロイグループを作成します。
インスタンス名が『deploy』というインスタンスにデプロイしたい場合は以下のように選択し、デプロイ設定を選択します。
CodePipeline
上記で作ったCodeBuildのビルドプロジェクトとCodeDeployのアプリケーションをCodePipelineで繋げます。
設定
パイプラインを作成し、上記で作成したCodeBuildのビルドプロジェクトとCodeDeployのアプリケーション・デプロイグループを繋げます。
パイプラインの設定を選択を行います。roleがない場合は新規作成できます。
ソースの取得元を選択します。
CodeCommitやGitHubなどが選択でき、リポジトリやブランチを選択できます。
上記で作成したCodeBuildのビルドプロジェクトを選択します。
上記で作成したCodeDeployのアプリケーション・デプロイグループを選択します。
まとめ
今回はCodeBuildのビルドプロジェクト作成、CodeDeployのアプリケーション・デプロイグループの作成を行い、それぞれを繋げるパイプラインをCodePipelineで作成しました。
ブランチにpushするとパイプラインがhookされ、自動でビルドを行いデプロイされます。
パイプラインを作成してしまえばとてもデプロイが楽になり、これまで感じていた不が解消されました。
最後に
CodeBuildやCodeDeployでハマったところもあるので、どのように対応したか今後紹介したいと思います。
Author And Source
この問題について(CodeBuild/CodeDeployをCodePipelineで繋げてデプロイを自動化する), 我々は、より多くの情報をここで見つけました https://qiita.com/itsubos/items/b82162847000c32fe57b著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .