[deployment] Heroku의 스테이징 인스턴스

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_san을 확인해야합니다

그것은 heroku의 환경과 저글링하는 데 꽤 좋은 일을합니다.


답변

이제 일이 더 쉬워졌습니다. 방법은 다음과 같습니다.

각 환경에 맞는 앱 만들기

$ 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_ENVRAKE_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 를 참조하십시오.)


답변