이번 프로젝트를 진행하면서는 조금 간지나게 GitHub를 활용하고 싶었습니다.
Issue도 더 현업자처럼 작성해 보고 싶었고, Pull Request를 요청하며 코드 리뷰도 하는 방향으로 진행하기로 결정했습니다.

이번 프로젝트를 진행하며 개발자끼리의 협업을 고민해 본 과정 기록입니다.


1) Branch는 어떻게 만들어 나갈까?

지난 프로젝트에서는 하나의 Repository에서 branch를 기능별로 나누어 작업 후 merge했습니다.
이번에는 이와 다른 방식으로 진행하고 싶어 생각한 것이 Issue별로 브랜치 만들기 입니다.

1. Issue 작성

Issue에는 작업할 내용을 글로 정리합니다. 그리고 Issue를 생성하면 Issue 번호가 나오게 됩니다.

2. 내 계정에 Fork

이번엔 하나의 Repository에서 작업하는 것이 아니라 메인 Repository를 각자의 계정에 Fork하여 Fork한 Repository에서 작업하기로 했습니다.

3. Issue번호명으로 브랜치 생성

작성한 Issue에서 아래와 같이 브랜치를 바로 만들 수 있도록 하는 기능이 있었습니다.

이 기능을 사용하여 Fork한 Repository에 해당 이슈에서 계획한 작업을 할 브랜치를 만들었습니다.
이슈 번호가 예를 들어 1번이면 issue1이라는 브랜치명을 지었습니다.


2) 작업 완료는 어떻게 할까?

작업 완료는 바로 merge를 시키기 보다 다른 개발 팀원들의 Review를 받고 그 후 merge할 수 있도록 하였습니다.

1. Pull Request 생성

Issue에서 계획한 작업을 방금 만든 브랜치에서 다 하게 되면 아래처럼 Pull Request를 만들 수 있는 버튼이 생깁니다.

그럼 아래와 같이 Fork한 Repository의 방금 만든 브랜치 작업 내용이 Main Repository의 main 브랜치로 합쳐지도록 설정을 합니다.

마지막으로 Reviewer를 다른 팀원분들로 설정을 하고 Pull Request 생성을 완료합니다.

2. Review 진행

다른 팀원들은 방금 올라온 Pull Request의 작업 내용을 확인하고 아래와 같이 approve 혹은 수정해야 할 내용을 적고 reject합니다.
image

3. Merge 진행

모든 팀원들의 approve를 받으면 Merge Pull Request를 누르며 해당 Issue의 작업은 마무리합니다.


3) GitHub 작성 양식 만들기

이제 Issue와 Pull Request를 GitHub 사이트에서 작성할 일이 많아졌는데, 써야 할 형태는 매번 비슷하기 때문에 양식을 만들었습니다.

먼저 프로젝트 가장 Root 경로에 .github란 폴더를 만들고, 아래와 같이 Markdown 파일들을 만들어줬습니다.
image

이름 그대로 PULL_REQUEST_TEMPLATE 마크다운 파일은 우리의 프로젝트에서 Pull Request를 작성할 때 자동적으로 작성될 양식을 설정할 수 있습니다.
또, ISSUE_TEMPLATE 폴더 안의 마크다운 파일들은 Issue를 작성할 때의 양식을 만들 수 있고, Issue는 여러 개의 양식을 만들 수 있습니다.

// Pull Request 양식 예시
 
# 📝 작업 내용  
  
> 이번 PR에서 작업한 내용을 간략히 설명해주세요  
  
# 💬 리뷰 요구사항  
  
리뷰어가 특별히 봐주었으면 하는 부분이 있다면 작성해주세요  
  
# 🔧 앞으로의 과제  
  
- 앞으로 이어서 할 일을  
- 적어주세요
// Issue 양식 예시
 
---  
name: 기능 추가 이슈 템플릿  
about: 각 기능을 추가할 때 생성할 이슈 형태입니다.  
title: "[\U0001F525Feature]"  
labels: "\U0001F525Feature"  
assignees: ''  
  
---  
  
# 💬 이슈 내용  
>   
# 📝 상세 내용  
  
  
# ✅ 체크리스트  
- [ ] 할 일  
  
# 📚 레퍼런스  
-

4) GitHub 알리미 만들기

GitHub의 단점으로는 알림이 오지 않는다는 것입니다. 이를 보완하기 위해 웹후크라는 것을 처음 사용하여 Discord에서 GitHub 알리미를 만들었습니다.

1. Discord에서 웹후크 만들기

서버를 우클릭하여 서버절정 -> 연동 -> 웹후크에 들어가여 새 웹후크를 만듭니다. image

웹후크 프로필과 활동할 채널을 설정하고 웹후크 URL 복사를 클릭합니다. image

2. GitHub에서 웹후크 적용하기

GitHub Main Repository의 설정 -> Webhooks -> Add Webhook에 들어가서 Payload URL에 방금 복사한 웹후크 URL을 넣어줍니다.

Context Type은 application/json으로 설정합니다.

스크롤을 내려서 알리미가 알림을 해줄 사항들을 체크합니다.
저는 Issues, Issue comments, Pull requests, Pull request reviews, Pull request review comments 들을 체크했습니다.

그 후 Add Webhook버튼을 눌러주면 GitHub에서 Issue나 Pull Request가 생길 때 마다 Discord에서 알림이 옵니다.

3. 알림 온 예시

image


최대한 GitHub에서 제공하는 기능을 많이 써보기 위하여 Fork, Issue, Pull Request, Review 기능들을 쓰도록 만들었습니다.

프로젝트가 끝나고 해당 협업 방식에 대해서 장점과 단점은 어떤 것들이 있었는지 돌아보는 시간을 갖도록 하겠습니다.