2017-12-10 30 views
5

GitFlow를 배웠다. 내가 읽은 문서/기사에서 다루지 않는 몇 가지 우려 사항이있다.GitFlow : 첫 번째로 또는 나중에 출시 된 후에 마스터에 병합 하시겠습니까?

develop 분기의 일부 지점 코드는 QA/준비 환경에 배포하고 엄격하게 테스트해야합니다. 따라서 GitFlow를 사용하면 release 브랜치를 develop으로 잘라낸 다음 release을 스테이징 환경에 배포합니다. , 당신은 실제로 , develop에서이 새로운 release 분기를 생성/분기됩니다 특정 프로젝트/환매 특약이 과정을 통해가는 첫 시간 :

첫째, 그냥 진짜 빨리 뭔가를 명확히하고 싶어? 그리고 앞으로는 다른 모든 시간이 release, 으로 병합됩니까?

그렇다면 QA는 스테이징 환경에서 release 분기를 테스트하고 모두 정상적으로 처리되므로 준비 할 준비가되었습니다.

  • 배포를 자극하고 masterrelease를 병합 : 당신이 있습니까? ; 또는
  • 병합 release ~ master다음 prod?

는 전자의 경우처럼 보인다 때문에 물어 당신 것 다음, 자극에 release 지점을 배포 자극에 배포 한 다음 master에 병합해야. 괜찮은 것 같지만, 종종 찌르거나 찌그러지지 않은 환경은 동일하지 않으며 찌르는 서버에서는 두 번째로 찌르는 서버에서 완벽하게 실행되는 코드는 찌르는 서버에서 시작됩니다. GitFlow는 핫픽스 지점의 개념을 지원하지만 사소한 수정을 위해 예약되어 있습니다. 롤백/백 아웃 릴리스가 필요한 복잡한 수정의 경우 이제는 "더티 코드"(어떤 이유로 든 중단되는 코드)가 master으로 병합됩니다.

그리고 후자의 경우 배포를 병합하고 릴리스 할 때부터 몇 시간이 걸릴 수도 있습니다 (특히 배포를 수행하기 위해 IT/Ops를 참여시켜야하는 경우). prod deploy가 실제로 발생합니다. 그리고이 시간 동안 "기능 X, Y 및 Z는 자극적입니다"라고 말한 master 가지가 있지만 실제로는 없습니다.

GitFlow가 실제로 어떻게 든이 문제를 해결하거나 알려진 해결 방법이 무엇인지 궁금합니다.

답변

1

작성하는 릴리스 분기는 작성한 기능 분기와 비슷하게 수명이 짧습니다. 릴리스가 완료되면 분기를 삭제합니다. 예를 들어, release/0.1.0 분기를 만들고 작업 한 다음 병합합니다.

프로덕션 환경에 배포 할 때 나는 항상 master 브랜치의 코드를 사용합니다. 즉, 배포하기 전에 릴리스 브랜치를 마스터에 먼저 병합합니다.

GitFlow는 앞으로 이동하지 않고 앞으로 이동하는 것에 관한 것입니다. 따라서 핫픽스가 확인 된 문제에 대한 수정 프로그램을 만드는 데 사용되는 이유는 무엇입니까?

생산에 들어가기까지 걸리는 시간은 실제로 GitFlow의 관심사가 아니므로이 분야에서 많은 도움이 될 것으로 생각하지 않습니다. 이는 어떤 분기 전략을 사용하든 관계없이 문제가됩니다.

+0

이, 우리는 답을 정당화 누락, 또는하고해야 확실 프로/같이 처리되어야합니다 릴리스 전후에 병합 할 때 단점이 있습니다. – NicolasW

+1

배포하기 전에 병합하는 것이 큰 이점은 최근에 마스터로 병합 된 버그 수정 (있는 경우)을 놓치면 거의 불가능하다는 것이고 결과적으로 회귀 사건이 발생한다는 것입니다. 그 하나의 이유로 나는 이것이 최선의 접근이라고 생각한다. – NicolasW

2

내가 작동이 프로젝트는 결정 만에 변경, 매우 혼란, 그래서 내 전략은 가능한 소프트웨어 구성 관리 의사 결정만큼 미루지하는 입니다. 우리는 우리가 생산에 배치 한 후 마스터 병합 우리는 테스트 근무 연기 확인 전자 메일이 있습니다

특히, 마스터에 병합. 이렇게하면 의사 결정 변경, 배포 롤백, 기술적 문제 또는 발생할 수있는 문제가 발생할 위험을 관리하여 혼돈을 포용합니다.

처음에는 제작에 들어가기 전에 마스터에 합류했지만 기술적 인 문제, 롤백, 최후의 관리 결정으로 인해 많은 문제가 발생하여 전략이 변경되어 잘 작동합니다. 지난 3 년 동안 일부 회귀가 발견 생산에 갈 후

경우, 결국, 그건 핫픽스 그리고 그 :)

+0

이 방법의 문제점은 마스터 및 태그에 병합 한 후 병합 태그가 기본적으로 배포하는 데 사용한 커밋과 다른 커밋을 가리키는 것입니다. 이로 인해 반복 빌드가 끊어집니다. – RaGe

+0

죄송합니다. 귀하의 의견을 파악하지 못했습니다. 정교하게 제발 주시겠습니까? "병합 후 태그"란 무엇을 의미하며 목적은 무엇입니까? – Luis

+0

gitflow에서 릴리스 브랜치를 마스터로 병합하면 마스터 브랜치에 태그를 붙입니다. [여기를보십시오] (https://datasift.github.io/gitflow/GitFlowMasterBranch.png). 여러분의 경우, 태그가 다른 시안 커밋을 가리키고있는 동안 (마지막으로 합치기 전의) 그린 커밋에서의 프로덕션 배포가 이루어집니다. 언젠가 똑같은 배포를 나중에 반복하고 싶다면 다른 커밋에서 배포하기 때문에 태그에서 배포하는 것이 효과가 없습니다. – RaGe