環境
- ruby歴 初心者
- rails5
- ruby 2.4.1p111
これはなに?
GAEにデプロイする際に、rake コマンドで staging 環境、production 環境で処理分岐できる task を書いてみました。
自動化といっても必要なファイルなどはまだ手動ダウンロードになってしまっているのですが、認証とプロジェクトの切り替えまで自動化したと言った感じです。
※ gcloud にアカウント認証情報がない場合は、途中でブラウザが開くので認証を行います。
config 設定自体を切り替える方法があるようですが
RakeTask での実現方法がわからなかったので
もし、できる方法があるのならば教えて頂けると助かりますm(_ _)m
実装
deploy.rake
namespace :deploy do
desc "deploy to staging"
task :staging do
sh 'gcloud config set app/cloud_build_timeout 3600'
sh "gcloud auth login #{ENV.fetch('DEPLOY_ACCOUNT_STAGING')}"
sh "gcloud config set account #{ENV.fetch('DEPLOY_ACCOUNT_STAGING')}"
sh "gcloud app deploy --project #{ENV.fetch('DEPLOY_PROJECT_STAGING')} --verbosity=info"
end
desc "deploy to production"
task :production do
sh 'gcloud config set app/cloud_build_timeout 3600'
sh "gcloud auth login #{ENV.fetch('DEPLOY_ACCOUNT_PRODUCTION')}"
sh "gcloud config set account #{ENV.fetch('DEPLOY_ACCOUNT_PRODUCTION')}"
sh "gcloud app deploy --project #{ENV.fetch('DEPLOY_PROJECT_PRODUCTION')} --verbosity=info"
//誤作動しないように gcloud の設定を staging 環境に戻しておきます。
sh "gcloud config set account #{ENV.fetch('DEPLOY_ACCOUNT_STAGING')}"
end
end
staging 環境へのデプロイ
bundle exec rake deploy:staging
production 環境へのデプロイ
bundle exec rake deploy:production
課題
改善ポイントは、staging 環境、project 環境時それぞれに必要なファイルをダウンロードしてきて所定の位置に配置できるようにすることです!
現状、わざわざ GCS へアクセスして秘匿情報を取得してきて配置するフローになってしまっています。
学んだこと
- gcloud コマンドでの環境切り替え