- 사내에서 mono-repository를 사용하기 시작한지 4개월째
- mono-repository 하면 따라다니는 키워드인 trunk-based development 또한 같이 적용 중
- trunk-based development 전략에 따라 main 브랜치에 커밋을 하고, release 브랜치에 체리픽을 하는 flow를 사용하고 있음
-
LinkedIn 기술 블로그 내용을 바탕으로 GitHub Action을 구성하였으나, CONFLICT를 자동으로 해결해주지는 못함. CONFLICT가 발생하는 경우 사용자가 local에서 직접
git cherry-pick
명령을 수행해야함
- 이
cherry-pick
명령을 도와주는 gh
플러그인을 직접 제작해보았습니다.
사용법
gh cherry-pick -pr <pr_number> -onto <target_branch> [-merge auto|squash|rebase] [-push]
-
-merge
옵션을 통해 PR merge commit을 cherry-pick 할지, PR의 원본 commit들을 cherry-pick 할지 선택할 수 있음
- 지정하지 않거나
-merge=auto
옵션을 사용하면, PR이 merge된 전략을 자동으로 inspect 하여 적용해줌
-
-push
옵션을 통해 cherry-pick 성공 시 자동으로 remote push를 지원함
후기
- 외부 프로세스 및 상태와 지속해서 상호작용하는 프로그램을 개발하며, 별도의 테스트 리포지토리를 만들어 Test Dataset을 생성함
- CLI 경험을 좋게 하기위한 여러 공부들
- docker-cli 를 혼자 만들어보기 위한 공부가 도움이 됨
- 생각보다 CLI 프로그램을 만드는데에는 많은 공수가 들어감
- 파이프라인 형태에서 많은 상태값을 관리하는 것
- 사용자에게 직관적인 input interface를 제공하는 것
- input validation을 최대한 빠른 시점에 제공하는 것
- 사용자 시스템을 원상태로 복구시키는 것 등..
- 하루 정도 안에 만들 수 있을 것으로 예상했으나, 만드는데에 약 5일이 걸렸음 (GitHub Actions Workflow 개선을 위한 개발이 병렬로 진행되긴 했으나, 여전히 예상보다 훨씬 많은 시간이 소요됨)