LoginSignup
0
1

More than 5 years have passed since last update.

GAEへのデプロイ作業の自動化(RakeTask)

Posted at

環境

  • 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 コマンドでの環境切り替え

参考

0
1
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
0
1