dev.myapp.com
테스트 용으로 코드를 푸시 한 다음 www.myapp.com
프로덕션 용 으로 푸시 할 수 있기를 바랍니다. Heroku로 가능합니까?
답변
Heroku에 대한 인터페이스는 기본적으로 Git 브랜치입니다. Heroku gem은 API를 통해 일부 작업을 수행하지만 Git 저장소 내에서는 새로운 원격 분기 일뿐입니다.
heroku create yourapp # production
git br -D heroku # delete the default branch
heroku create staging-yourapp # staging
git br -D heroku # delete the default branch
Heroku에서 여러 애플리케이션을 설정하면 다음과 같이 Git 저장소를 구성 할 수 있습니다.
git remote add staging git@heroku.com:staging-yourapp.git
git push origin staging
git remote add production git@heroku.com:yourapp.git
git push origin production
저는 보통 ‘작업’브랜치에서 일하고 제 마스터로 Github를 사용합니다.
이 경우에 해당한다고 가정하면 배포 워크 플로는 다음과 같을 것입니다.
git co -b working
# do some work
# push to github:
git co master
git merge working
git push
# push to staging:
git co staging
git merge master
git push origin staging
# push to production
git co production
git merge master
git push origin production
답변
이것은 나와 같은 초보자 인 경우 알아야 할 모든 것을 설명합니다. http://devcenter.heroku.com/articles/multiple-environments
답변
원래 질문의 핵심 부분은 스테이징 앱을 기본 앱 (www.myapp.com)의 하위 도메인 (dev.myapp.com)에 연결하는 것입니다. 이것은 어떤 답변에서도 다루어지지 않았습니다.
1 단계 : Luke Bayes의 답변에 표시된대로 앱의 프로덕션 ( ‘myapp’) 및 스테이징 ( ‘staging-myapp’) 버전을 모두 구성합니다.
2 단계 : 도메인 관리 시스템 (예 : GoDaddy)에서 :
Create a CNAME record: dev.myapp.com
that points to: proxy.heroku.com
3 단계 : dev.myapp.com을 staging-myapp로 라우팅하도록 Heroku를 구성합니다.
heroku domains:add dev.myapp.com --app staging-myapp
CNAME 레코드가 전파 될 시간이 지나면 dev.myapp.com에서 스테이징 앱을 실행할 수 있습니다.
답변
답변
이제 일이 더 쉬워졌습니다. 방법은 다음과 같습니다.
각 환경에 맞는 앱 만들기
$ heroku create myapp --remote production
$ heroku create myapp-staging --remote staging
이렇게하면 각 앱에 대해 명명 된 원격 저장소가 생성되며 .git/config
.
이제 중 하나를 사용할 수 있습니다 –app 또는 –remote 특정 응용 프로그램을 대상으로 스위치를 :
$ heroku info --app myapp-staging
$ heroku info --remote staging
Rails 환경 설정
Rails 앱의 경우 Heroku는 기본적으로 ‘프로덕션’환경을 사용합니다 . 스테이징 앱을 스테이징 환경에서 실행하려면 프로젝트에서 환경을 만들고 앱 에서 해당하는 RAILS_ENV 및 RAKE_ENV 환경 변수를 설정합니다.
$ heroku config:set RACK_ENV=staging RAILS_ENV=staging --remote staging
환경 구성
다른 구성 변수가있는 경우 각 환경에 대해서도 전달해야합니다.
$ heroku config:set AWS_KEY=abc --remote staging
$ heroku config:set AWD_SECRET=123 --remote staging
...etc
그것은 큰 고통입니다. 그래서 나는 단지 내 snappconfig gem을 사용하고 실행합니다.
$ rake heroku:config:load[myapp-staging]
내 프로젝트의 YAML 구성 파일을 Heroku에로드합니다.
배포
이제 다음과 같이 Heroku로 푸시합니다.
$ git push staging master
$ git push production master
다음과 같이 마이그레이션하십시오.
$ heroku run rake db:migrate --remote staging
$ heroku run rake db:migrate --remote production
(자세한 정보와 바로 가기 는 앱의 다중 환경 관리 | Heroku Dev Center 를 참조하십시오.)