9P by a1eng0 2일전 | favorite | 댓글 2개
  • 사내에서 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 개선을 위한 개발이 병렬로 진행되긴 했으나, 여전히 예상보다 훨씬 많은 시간이 소요됨)

왜 이게 필요한지 잘 이해가 안가는 전략이네요...

release-from-trunk에 소개되어있는 내용을 읽어보시면 이해해 도움이 되실까 싶습니다 ㅎㅎ