えー、前回下記のような投稿をしましたが、
CodePipeline Githubにコミットしたら自動的にデプロイするまでの道のり①
CodePipeline Githubにコミットしてテスト環境で確認の後デプロイする
今回はみんなやりたい!環境やサーバー、テスト、リリースなどによって「何か」を変えたいというのをやります。
たとえば、テスト環境ではこのファイル表示したい、とか、エラーログレベルを調整したいとか、そういうのですね。
これを自動でやるのが、デプロイツールのだいご味ではないでしょうか!!
さて、わかってしまえば単純な仕組みですが、AWSのドキュメントの場所がわからず悩みました。
ずばり、下記を見ればそれができます。
CodeDeployで作った、デプロイグループの名前を変数として使えます。
まずは、超単純ですが、テスト環境の場合、index2.htmlというファイルを作って、aaabbbという文字列を表示します。
- テスト環境へのデプロイを、”DeployTest”という名前のデプロイグループに保存します。
- change_as_serverというファイル名で下記を書いて保存します。
#!/bin/bash if [ "$DEPLOYMENT_GROUP_NAME" == "DeployTest" ] then echo aaabbb > /var/www/html/index2.html fi
CodeDeployで利用する、appspec.ymlで、
hooks: BeforeInstall:
に、上記で作ったスクリプトを走らせるように書きます。
アプリケーションのインストール前に何をするかってことですね。
appspec.ymlの全体が下記です。
version: 0.0 os: linux files: - source: / destination: /var/www/html/ hooks: BeforeInstall: - location: scripts/start_server timeout: 300 runas: root - location: scripts/change_as_server timeout: 300 runas: root ApplicationStop: - location: scripts/stop_server timeout: 300 runas: root
- 前回CodePipeline Githubにコミットしてテスト環境で確認の後デプロイするにて作ったパイプラインの様子が下記です。
今回もこのフローにのってやります。
- StagingでのCodeDeployにはDeployTestのデプロイを、ReleaseでのCodeDeployにはDeployReleaseのデプロイを利用します。
- appspec.ymlとscripts/change_as_serverをGithubにコミットすると、ちょうどCodePipelineが走り始めます。
- テスト環境だけ、index2.htmlができていると思います!⊂(^-^)⊃
- 今回、bashでやりましたけども、Pythonとかも使えるようなので、柔軟にいろんなことができると思います。