우리는 자체 팀 리포지토리를 관리하는 여러 팀이있는 작은 회사입니다. 이것은 웹 플랫폼이며 각 팀의 아티팩트는 매일 밤 테스트를 위해 배포됩니다. 버전 관리 및 패키징 관련 프로세스를 공식화하려고합니다.
모든 팀에는 일상적인 개발을 수행하는 마스터 지점이 있습니다. 각 팀의 품질 보증 담당자는 팀 변경 사항의 결과물을 요리사가 모든 구성 요소를 결합한 테스트 베드에 배포하기를 원합니다. 아티팩트는 타르볼이지만 버전을 올바르게 생각하고 추론 할 수 있도록 RPM으로 변환하고 싶습니다.
릴리스 프로세스에는 각 git 리포지토리의 개발 분기 (대부분의 경우 마스터)에서 릴리스 분기를 차단하는 과정이 포함됩니다. 그런 다음 일련의 아티팩트에서 테스트 및 사인 오프를 수행하는 품질 보증 담당자에게 제공됩니다.
예를 들어 이것은 관련된 릴리스 브랜치가있는 일반적인 git 저장소입니다.
0-0-0-0-0-0-0-0-0-0 (master)
| |
0 0
(rel-1) |
0
(rel-2)
개발 브랜치에서 오는 패키지의 버전 관리를 수행하기위한 계획을 찾으려고 노력하고 있습니다. 각 리포지토리의 마스터 분기에 과도한 태그를 지정하고 분기 만 해제하도록 태그를 제한하고 싶지 않습니다. 그러나 표준 yum / rpm 의미를 사용하여 테스트 시스템에서 배포 된 패키지를 쿼리 할 수 있어야합니다. 마스터 브랜치에 태그가없는 경우 개발 버전은 어떤 모양입니까? 나는 git describe
빌드 버전의 유용한 표현을 제공 할 수 있지만 지점의 다양한 릴리스 지점에 태그가 지정되면 잘 작동 한다는 것을 이해합니다 .
EDIT1 : @ Urban48 님의 답변에 답변
릴리스 과정을 좀 더 설명해야한다고 생각했습니다. 이 논의의 목적을 위해 master
모든 저장소에 지점이 있다고 가정 합니다. master
지점은 개발 지점으로 간주되고 자동화 된 CI-CD에 배포 QA 환경을 활성화. 이것은 마스터의 안정성을 보장하기 위해 야간 테스트의 하위 집합이 실행되는 곳입니다. 릴리스 브랜치를 절단하기 전에이 작업 파이프 라인을 살펴 봅니다. 릴리스 지점은 수명이 짧습니다. 예를 들어, 안정적인 마스터에서 릴리스 브랜치를 절단 한 후 전체 회귀가 실행되고 수정 사항이 작성되어 프로덕션에 배치됩니다. 이 작업을 수행하는 데 약 일주일이 걸립니다. 우리는 거의 2 주마다 생산을 릴리스합니다.
당사의 기능 분기는 항상 마스터에서 차단되며 CI-CD 안정성 검사를받는 마스터와 병합하기 전에 일정량의 개발자 테스트를 거칩니다.
핫픽스는 핫픽스 분기 (릴리스 분기에서 잘라 냄)에서 만들어지며 최소한의 영향 테스트로 프로덕션 환경에 배포됩니다.
릴리스 및 핫픽스 분기에 대한 버전 관리 전략은 다음과 같습니다. 같은 버전을 통해 품질 보증 사이클 이동하는 동안 가지를 출시 v2.0.0-rc1
, v2.0.0-rc2
및 품질 보증 사인 오프가 될 마지막으로 후 v2.0.0
.
우리는 때때로 버전이되는 지점을 릴리스 (및 마스터)하기 위해 병합 된 작은 기능에 대해 점선 릴리스를 수행합니다 v2.1.0
. 그리고 핫픽스는 v2.1.1
패턴을 가정합니다 .
그러나 문제는 이러한 브랜치를 버전 화하는 것이 아닙니다. 이 버전 관리 체계를 완전히 변경하지 않는 것이 좋습니다. 유일한 변화는 개발 브랜치에 관한 것입니다. 석사. CI-CD 환경에서 이전 버전의 프로덕션 환경에 어떤 버전이 있는지 확실하게 표시하려면 어떻게해야합니까? 이것은 스마트 git 태깅을 통해 이상적으로 수행되지만 마스터 브랜치를 지나치게 태그하지 않는 것이 바람직합니다.
rc
접미사 앞에 무엇이 있습니까? 그것은 major.minor
개발 버전을 지시 할 것 입니다. rc
빌드 번호는 그에 기초하여 얻을 수 있습니다. 또한 rc
마스터에서 풀리지 않기 때문에 마스터에서는 의미가 없습니다. 릴리스 릴리스의 릴리스 후보에 릴리스주기의 일부로 오늘 태그를 지정합니다
rc
접미사가 있습니다.