akinoriosamura / QaAppServer

0 stars 0 forks source link

development,test,production環境構築とデプロイ方法 #4 #30

Open akinoriosamura opened 6 years ago

akinoriosamura commented 6 years ago

development,test,production環境の構築方法とデプロイ方法について整理する

akinoriosamura commented 6 years ago

APP構築

heroku login FRONT_APP_TEST='qa-front-test' SERVER_APP_TEST='qa-server-test' heroku create $FRONT_APP_TEST

Creating ⬢ qa-front-test... done
https://qa-front-test.herokuapp.com/ | https://git.heroku.com/qa-front-test.git

heroku create $SERVER_APP_TEST

Creating ⬢ qa-server-test... done
https://qa-server-test.herokuapp.com/ | https://git.heroku.com/qa-server-test.git

heroku addons:add cleardb:ignite -a $SERVER_APP_TEST

Creating cleardb:ignite on ⬢ qa-server-test... free
Created cleardb-regular-23164 as CLEARDB_DATABASE_URL
Use heroku addons:docs cleardb to view documentation

heroku config -a $SERVER_APP_TEST | grep CLEARDB_DATABASE_URL

CLEARDB_DATABASE_URL: mysql://bc79745f50e828:0421fb1b@us-cdbr-iron-east-05.cleardb.net/heroku_ff841f6e794ec8d?reconnect=true

heroku config:set DATABASE_URL='mysql2://bc79745f50e828:0421fb1b@us-cdbr-iron-east-05.cleardb.net/heroku_ff841f6e794ec8d?reconnect=true' -a $SERVER_APP_TEST

Setting DATABASE_URL and restarting ⬢ qa-server-test... done, v4
DATABASE_URL: mysql2://bc79745f50e828:0421fb1b@us-cdbr-iron-east-05.cleardb.net/heroku_ff841f6e794ec8d?reconnect=true

heroku config:set DATABASE_PASSWORD='0421fb1b' -a $SERVER_APP_TEST

Setting DATABASE_PASSWORD and restarting ⬢ qa-server-test... done, v5
DATABASE_PASSWORD: 0421fb1b

heroku config:set RAILS_ENV='test' -a $SERVER_APP_TEST

Setting RAILS_ENV and restarting ⬢ qa-server-test... done, v6
RAILS_ENV: test
akinoriosamura commented 6 years ago

デプロイ

git clone https://github.com/akinoriosamura/QaAppServer.git cd QaAppServer heroku git:remote -a $SERVER_APP_TEST

set git remote heroku to https://git.heroku.com/qa-server-test.git

git push heroku master

...
remote: Verifying deploy... done.
To https://git.heroku.com/qa-server-test.git
 * [new branch]      master -> master

URL=>https://qa-server-test.herokuapp.com/ heroku run rails db:migrate -a $SERVER_APP_TEST

git clone https://github.com/akinoriosamura/QaAppFront.git cd QaAppFront npm install vi webpack.prod.config.js

頭のtry catchの下辺りに追加
var env = process.env.QA_ENV === 'test'
  ? require('./test.env')
  : require('./prod.env')
...
このファイル内の変数定義は削除して変わりにenvを使う
    new webpack.DefinePlugin({
      'process.env': env

vi prod.env.js

'use strict'
module.exports = {
  STRIPE_PUBLISH: '"xxx"',
  API_DOMAIN_URL: '"https://qa-server.herokuapp.com/"',
  FRONT_DOMAIN_URL: '"https://qa-front.herokuapp.com/"'
}

vi test.env.js

'use strict'
module.exports = {
  STRIPE_PUBLISH: '"xxx"',
  API_DOMAIN_URL: '"https://qa-server-test.herokuapp.com/"',
  FRONT_DOMAIN_URL: '"https://qa-front-test.herokuapp.com/"'
}

QA_ENV=test monaca transpile cd www public/app.bundle.js内をqa-serverで検索してURLがtest環境ようになっている事を確認 la -la で.gitがある事を確認。ない場合はgit init heroku git:remote -a $FRONT_APP_TEST

set git remote heroku to https://git.heroku.com/qa-front-test.git

git add . git commit -m "xxx" git push heroku master

S-in後のServer APPデプロイ

vi Procfile

release: bundle exec rails db:migrate

これで変更したアプリが公開される前にDBマイグレーションが実行される(herokuのRelease Phase機能)

...
remote: Verifying deploy... done.
remote: Running release command...
remote: 
remote: Waiting for release.... done.
To https://git.heroku.com/qa-server-test.git
   f85a092..dbcc7ff  master -> master

ログもVerifying deploy... done. の後に Running release command...が出力されるようになる。

akinoriosamura commented 6 years ago

monaca transpileは、コンパイルしたときのURLをapp先で使用する(テストをコンパイルしたら、prod時においてもテストのスクリプトを使ってしまう)。なので、test, productionは別app作成してデプロイする必要あり。

上記は、フロント(production)、フロント(test)、サーバー(production)、サーバー(test)それぞれherokuのappを作成しデプロイする