- GitLab CI Doker imageからAWS Elastic Beanstalkに更新をかける
だいぶ放置しました。
最近はGitLab CIから Circle CI に乗り換えたりしているのですが、載せます!
と言ったので、載せます!
- 事前準備編
eb init
コマンドで作成される
.elasticbeanstalk/config.yml
があること
※開発と本番でglobal application_name が異なるため、僕は
.elasticbeanstalk/development/config-dev.yml
.elasticbeanstalk/production/config-prod.yml
に分けて、後ほどCIで mv コマンドで入れてます。
.ebextensions/ の中にやりたい内容があること
僕がやってるのは
https の設定
nginx の設定
env の設定
くらいです。
https の設定で
SSLCertificateArns を間違えて開発と同じでデプロイしておかしくなったこともありました。
- GitLab CI の中身
stages とか、test コマンドなどは省きます。
単純に ElasticBeanstalk に上がるとこらへんのみの Script を記載してます。
- mv .elasticbeanstalk/development/config-dev.yml .elasticbeanstalk/config.yml
これで開発環境のを持ってくる
- mv .ebextensions/development/env-dev.config .ebextensions/env.config
環境変数もついでに持ってくる
- mv .ebextensions/development/load-balancer-dev.config .ebextensions/load-balancer.config
SSLCertificateArnsが違うのでこれも持ってくる
- pip install awsebcli --upgrade --user
EB install
- git checkout develop
Git から持ってくる
- chmod +x .eb-config-dev.sh
- ./.eb-config-dev.sh
↑この中にAWS情報を記載しておく
- export PATH=~/.local/bin:$PATH
PATH通す
- eb --version
一応確認しておく
- eb use AdminConsoleDevelopment-env
deployしたい環境を記載しておく
- eb status
一応確認しておく
- eb deploy
でデプロイ
以上です。
これをdevelopブランチとmaster ブランチで分けて記載して環境分ければうまくいくのかなと...
個人的に悩んでいるところは、
eb use AdminConsoleDevelopment-env ← ここにdeployをし、稼働開始
その後、新しいソースを乗っけたサーバ
AdminConsoleDevelopment-env-1 ←を作成し、URLスワップを行うと
↑こいつが最新になる
とすると、次回deployする時、またCIの中身を
AdminConsoleDevelopment-env
など、違うアプリーケーション名にしないといけない状態...
これを解決したい...
何か誤り等ございましたらご指摘いただけますと幸いです...