-
20221115 TIL 자동화를 하자!TIL 2022. 11. 15. 12:56
트레이너님께서 과제를 하면서 날린 PR들을 머지해도 된다고 하신지 꽤 됐는데,
한땀한땀 author를 나로 설정해서 필터하고, PR에 들어가서 머지하고,
다시 나와서 다시 PR들어가서 머지하고, 하는 것이 너무나 귀찮았고, 시간이 부족해서 하지 않고 있었다.
하지만 PR을 머지하면 나의 깃헙 컨트리뷰션이 올라가기 때문에 내가 작성했던 과제들에 대한 PR을 머지를 하는 것이 매우 좋은 일인데,
약 5개의 레포지토리마다 날린 PR이 몇 십 개여서 너무나 귀찮아서 자동화할 방법이 없나 고민을 하던 중에
구글에 아무리 github merge all pr 이런식으로 검색을 해봐도 자동화할 수 있는 방법이 나오지가 않아서 한참 미뤄두고 있었다.
https://m.post.naver.com/viewer/postView.nhn?volumeNo=7627293&memberNo=32532701&searchKeyword=4%EC%B0%A8%20%EC%82%B0%EC%97%85%ED%98%81%EB%AA%85%20%EC%8A%A4%ED%83%80%ED%8A%B8&searchRank=404 그런데 예전에 코드숨에서 어떤 리뷰어분께서 리뷰를 완료한 PR을 한 번에 머지하는 디스코드 봇을 만드셨어서
그분께 어떤 자료를 참고해서 만드셨냐고 여쭤봤던 적이 있고,
github API를 참고해서 만드셨다고 알려주셨었는데, 그게 기억이 나서 github API를 찾아봤다.
https://docs.github.com/en/rest
이 사이트에서 헤매다가 흘러흘러 https://docs.github.com/en/rest/quickstart
여기에 들어왔고, 드디어 https://cli.github.com/manual/gh_api 이 문서에 도달하였다!
그리고 어떻게 해야하나 보다가 왼쪽에 여러가지 액션이 있길래 살펴봤고, pr항목에 merge를 발견하였다!!!
드디어 자동화를 할 수 있는 도구가 생겨서 너무나 기뻤다.
그리고 앞으로 깃헙 관련해서 자동화를 하는 것이 전혀 두렵지 않아졌다.
gh pr merge로 내가 작성한 PR만 머지할 수 있는 방법이 잘 안보여서
gh pr list -A <내 깃헙 id> (나의 경우 gh pr list -A heyjyu)로 내가 작성한 pr중 머지가 되지 않은 pr을 뽑아내서 파일로 저장해두고,
gh pr list -A heyjyu --json number -t '{{range .}}{{tablerow (printf "gh pr merge %v -md;" .number)}}{{end}}' > cmd.sh
정확히는 위 코드를 썼다.
heyjyu부분을 자신의 깃헙 id로 바꿔서 사용하면 된다!
create-cmd.sh 파일에 위 코드를 써서 저장해두고,
chmod +x create-cmd.sh 로 실행할 수 있도록 권한을 바꾸고,
./create-cmd.sh로 실행을 하면 cmd.sh 파일이 생성된다.
그리고 cmd.sh도 실행할 수 있도록 chmod +x cmd.sh를 하고,
./cmd.sh를 하면 컨플릭이 없는 PR은 모두 위 영상처럼 머지가 된다.
실패한 PR은 컨플릭트를 해결하고 머지하면 된다!
아직 쉘 스크립트를 잘 다루지는 못해서 수동으로 하는 부분이 조금 있지만, 지금은 이정도로도 많이 만족한다!
PR을 머지하기 위한 나의 몇 시간을 아낄 수 있었고,
비록 오늘 작업한 것은 엄청난 프로그램은 아니었지만 자동화 프로그램을 만드는 것은 언제나 재밌고 짜릿한 것 같다.
앞으로도 단순 반복 작업을 많이 해야될 때마다 자동화 프로그램을 하나씩 작성해보도록 하자.
그리고 어떤 부분을 자동화를 하고 싶다면 API를 제일 먼저 검색해보는 습관을 가져야겠다.
'TIL' 카테고리의 다른 글
20221117 TIL 항상 코드를 더 낫게 만들 방법이 있다 (0) 2022.11.17 20221116 TIL 다시 만난 자바스크립트 this (0) 2022.11.16 20221114 TIL 백트래킹 알고리즘 (0) 2022.11.14 20221113 TIL useEffect (0) 2022.11.13 20221112 TIL 악마는 정말로 디테일에 있었다 (0) 2022.11.12