GitHub Flow
GitHub Flow는 깃허브에서 만든 단순한 구조의 브랜치 전략이다. 작은 팀과 빈번한 업데이트가 필요한 프로젝트에 이상적이다.
브랜치
- Main, Feature, Bugfix 브랜치로 이루어진다.
- 모든 브랜치는 Main으로부터 나온다.
- Main으로부터 기능추가, 버그 수정 작업을 위한 새로운 브랜치를 생성한다.
기능 개발, 버그 수정
- 기능별로 커밋한다.
- 커밋 메시지와 브랜치 이름은 정확하고 간결하게 작성한다.
- 커밋은 서버의 동일한 브랜치에 병합한다. (Git flow와 차이점)
리뷰 및 병합
- GitHub Actions와 같은 CI/CD 도구를 사용하여, 풀 리퀘스트가 생성되면 자동으로 테스트를 실행할 수 있다. 이렇게 하면 코드가 main 브랜치에 병합되기 전에 기능 브랜치에서 모든 테스트가 통과했는지 확인할 수 있다.
- 코드 리뷰와 테스트가 완료되면, 풀 리퀘스트를 승인하고 기능 브랜치를 main 브랜치에 병합한다.
Gitflow
많은 기업에서 표준으로 사용하는 브랜치 전략으로 크게 5개의 브랜치를 운영하며 관리한다. 배포 주기가 길고 팀의 여력이 있는 경우 적합하다.
브랜치
- 주 브랜치 main, develop와 보조 브랜치 feature, release, hotfix로 이루어진다.
- main 브랜치는 제품으로 배포할 수 있는 브랜치이다.
- develop 브랜치는 개발자들이 개발을 하는 브랜치이다.
- 보조 브랜치는 사용을 마치면 브랜치를 삭제한다.
기능 개발
- feature 브랜치는 하나의 새로운 기능을 만들 때 생성한다.
- feature 브랜치는 develop으로부터 분기하고 병합된다.
- 병합할 때는 --no-ff를 사용하여 기록을 그룹화한다.
배포
- release 브랜치는 다음 버전 출시를 위해 QA를 진행하는 브랜치이다.
- release 브랜치는 develop으로부터 분기하고 develop과 main에 병합된다.
- release- 접두사를 주로 이용한다.
- 버그 수정 시 release 브랜치에서 수정하고 주 브랜치에 병합한다.
- 버그 수정 및 버전 번호, 빌드 날짜와 같은 메타 데이터를 준비하며 기능 개발은 금지된다.
- main으로 병합 후에는 tag 명령을 통해 버전을 명시한다.
버그 수정
- hotfix 브랜치는 버그가 발생하면 빠른 수정을 위해 생성하는 브랜치이다.
- main으로부터 분기하고 develop과 main에 병합된다.
- hotfix- 접두사를 주로 이용한다.
- main으로 병합 후에는 tag 명령을 통해 마이너 버전을 올려서 명시한다.
--no-ff
--no-ff
는git merge
에 사용되는 옵션이다. 이 옵션을 사용하면 병합 시 "Fast-Forward" 방식이 아닌 "Merge Commit"을 강제로 생성하게 된다. 이를 통해 병합 히스토리를 명확하게 유지할 수 있다.Fast-Forward 병합
main 브랜치: o---o---o \ feature 브랜치: o---o
main 브랜치: o---o---o---o---o
--no-ff 병합
main 브랜치: o---o---o \ feature 브랜치: o---o
main 브랜치: o---o---o---o \ / feature 브랜치: o---o
GitLab Flow
GitLab Flow는 GitHub Flow와 Gitflow의 측면을 결합하여 다양한 개발 및 배포 전략에 적응할 수 있는 유연성을 제공한다. 여러 환경을 지원하며, 코드 리뷰를 위한 병합 요청을 권장한다.
Production 브랜치
- 테스트가 끝난 기능에 대해 배포를 하기 위한 브랜치이다.
- Gitflow의 main 브랜치와 동일하다.
Pre-Production 브랜치
- 배포 전에 제품을 테스트 (QA, 품질검사) 하는 브랜치이다.
- 테스트가 정상적으로 완료되면, production과 main에 병합한다.
- Gitflow의 release 브랜치와 동일하다.
Main 브랜치
- main 브랜치는 feature 브랜치에서 병합된 기능에 대해 테스트를 진행한다.
- 전체적인 테스트가 진행되어 기능에 대한 보장이 되었다면 production 브랜치로 병합한다.
- 만약 staging 단계를 원한다면 pre-production 브랜치로 병합한다.
- Gitflow의 develop 브랜치와 동일하다.
Feature 브랜치
- 특정한 기능(단위 기능)을 구현하는 브랜치이다.
- 기능 구현이 완료되면, master 브랜치로 병합한다. 병합 후에는 삭제된다.
728x90
'DevOps' 카테고리의 다른 글
로그 로테이트(Logrotate) (0) | 2024.11.12 |
---|---|
[MW] Flyway (0) | 2024.08.31 |
[Git] Merge 전략 (0) | 2024.08.25 |
RabbitMQ, Apache Kafka, AWS SQS 비교 (0) | 2024.01.13 |
Apache Kafka (0) | 2023.12.30 |