문제

Git + Heroku (Ruby on Rails)와 함께 사용하기에 좋은 배포 전략은 무엇입니까?

현재 내 Origin Git 저장소와 함께 일하는 방식 : 모든 기능 (또는 'Stories')은 먼저 분기로 체크 아웃 한 다음 마스터와 합병하여 원산지로 밀려납니다.

Origin/Master로 푸시 된 것은 새로운 Rails 코드를 준비 영역으로 끌어 올리는 스크립트 (Simple Rails Webserver)를 트리거합니다.

새로운 프로덕션 버전을 Heroku로 밀어야 할 때가되면 새 지점을 만들어야 할 때 (Production_version_121과 같은 것), 어떻게 든 Heroku로 밀어야합니까?

이상적으로는 프로덕션 브랜치에 포함시켜야하는 이전 개발 버전에서 어떤 기능을 선택하고 선택하고 싶습니다 ... 테스트하고 Heroku로 푸시하십시오.

예를 들어, 최신 코드가 모두 생산에 밀려 나기를 원하지 않을 수 있습니다. 더 많은 디버깅이 필요한 실험 기능 "B"를 포함하지 않고 "C"기능을 수행 한 기능 "A"를 원할 수도 있습니다.

NB 나는 처음에는 Capistrano를 피하고 지금은 수동으로 작동하는 것을 얻을 것입니다.

생각? 모범 사례?

도움이 되었습니까?

해결책

Gemcutter 프로젝트에서 우리는 단순히 a 생산 나뭇가지. 생산 현장에서보고 싶은 변경 사항은 해당 지점에 병합 된 다음 다음에 배치됩니다.

git push heroku production:master

그만큼 staging Branch는 준비 사이트 (Heroku에서도)와 비슷한 목적을 제공합니다.

다른 팁

내가 Vincent Driessen 's를 읽은 이후로 성공적인 GIT 분기 모델, 나는 푹 빠졌다. 내 회사 전체 (우리 중 8 명)는 이제이 모델에 대한 표준화되었으며 제가 상담 한 다른 장소들도 사용하기 시작했습니다.

내가 보여준 대부분의 사람들은 이미 비슷한 일을하고 있으며 적응하기가 매우 쉽다는 것을 알았습니다.

간단히 말해서, 당신은 영구적 인 (마스터 및 개발) 2 개의 가지가 있습니다. 대부분의 경우, 당신은 단지 개발에서 지점을 만들고 다시 개발로 합병 할 것입니다. 생산 릴리스와 핫픽스를 수행 할 때 상황이 조금 더 복잡해 지지만 게시물을 몇 번 읽은 후에는 열광합니다.

명령 줄 도구도 있습니다 git-flow 당신을 돕기 위해.

이것에 대해 다양한 방법이 있으며, 실제로 당신의 선호도에 달려 있습니다.

나는 당신에게 내 머리 꼭대기에서 하나의 가능한 전략을 제공 할 것입니다. 이미 마스터를 사용하는 자동 스테이징 설정이 있으면 '프로덕션'지점을 만드는 것이 좋습니다. 프로덕션에 대한 수정/기능을 홍보하려면 주제 지점을 '프로덕션'지점으로 병합합니다.

git checkout production
git pull . my-topic-branch
(resolve any conflicts)

실제로 준비가되었을 때 푸시 해당 코드는 프로덕션 서버에 대한 코드입니다 꼬리표 고유 한 이름을 사용하는 지점 (아마도 타임 스탬프). 그런 다음 생산 지점을 Heroku로 밀어 넣습니다.

git checkout production
git tag release-200910201249

일관된 이름 지정 체계를 사용하는 것이 중요하기 때문에 타임 스탬프의 태깅을 자동화하기 위해 스크립트 또는 GIT 별칭을 작성하는 것이 좋습니다. 나는 다음과 같은 것을 사용합니다.

git config alias.dtag '!git tag release-`date "+%Y%m%d%H%M"`'

그것은 단지 유형을 수행 할 수있게합니다 git dtag 타임 스탬프로 릴리스를 태그하고 싶을 때.

사용하는 태그를 볼 수 있습니다 git tag 그리고 그것들을 사용하는 것을 본다 git show release-1234. 태그에 대한 자세한 내용은 실행하십시오 git help tag. 당신은 또한 이것을 찾을 수 있습니다 Github 가이드 태그에 도움이됩니다. 나는 또한 다른 사람들의 워크 플로를 읽는 것이 좋습니다 (여기 좋은 글)) 그리고 당신에게 맞는 것을 선택하고 선택하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top