Open daadaadaah opened 4 months ago
[해결과정] (심플하게)
1) 번거로움을 해결하기 위한 2가지 방법에 대해 생각해 봄.
방법 1 : Github Action의 Schedule 이용하여 매주 특정요일에 지난 주 과제 PR을
자동으로 Merge 시키는 방법
방법 2 : Discord Bot을 만들어 Command를 통해 Merge 싶은 레포를 선택하여 일괄
Merge 시키는 방법
2) 현재 상황을 분석한 후 위 2가지 방법의 장단점에 대해 생각해본 결과, 방법2가 지금 상황에 좀더 적절하다고 판단함.
3) Github API에 Merge 관련 API가 있는지 검토한 결과, Github API에 Repository를 일괄적으로 Merge하는 API는 없고, 단건 Merge API만 있어서, 단건 Merge API를 JS 의 Promise API로 병렬처리하도록 결정함.
4) 병렬처리를 위해 Promise.all과 Promise.allSettled 중에 고민이었는데, 한개가 실패하더라도, 다른 것은 성공하게 하는게 UX측면에서 더 좋을 것 같아서 Promise.allSettled로 결정함.
5) 유튜브를 통해 Command로 Discord Bot 예제 영상을 찾아서 하나하나 코드를 따라 쳐보면서 이해함.
6) 명령어를 어떻게 만들어서, 어떤 메시지를 보여줄지에 대해 고민함.
7) 명령어로 Repository 이름을 사용해서, 그 명령어를 선택했을 때, 해당 Repository가 일괄 Merge 되도록 함.
8) Merge 후 성공 PR 갯수와 실패 PR 갯수, 실패 PR 링크 등을 보여주면 UX측면에서 좋을 것 같아서, 해당 데이터를 Merge 작업 후 메시지에 담기게 함.
9) 몇개의 Repository를 테스트해본 결과, 잘 동작한 것으로 파악해서, 헤로쿠에 배포함.
10) 이렇게 만든 디스코드 봇이 잘 동작하도록 디스코드 리뷰어 채널에 권한 수정 후 디스코드 리뷰어 채널에 출시함.
[결과]
메모
deploy-commands.js 로 새로운 명령어를 추가하고 난 후 node deploy-commands.js 로 명령어를 등록해줘야 한다.
TODO
[x] merePRs 코드 정리
[x] 봇 24시간 돌리기 : 헤로쿠 이용 참고 : https://dashboard.heroku.com/apps/codesoom-github-merge-bot
[x] push 하면, 자동으로 헤로쿠에서 deploy 하도록 설정
[x] 의견 묻기
[x] 리뷰어 채널에서만 명령어 사용하도록 윤석님께 권한 요청하기
[ ] TS 로 바꾸기 참고 : https://sabe.io/tutorials/how-to-build-discord-bot-typescript#resources
[ ] 명령어 사용을 특정 채널 또는 특정 사람한테만 할 수 있게 하기
Reference