프로젝트/장기 프로젝트

Hustle #4. 이슈 템플릿, 브랜치 규칙 설정, 프로젝트 보드 만들기

Chipmunks 2023. 7. 6.
728x90

안녕하세요, 다람쥐입니다.

이번 포스팅에선 깃허브 레포지토리를 설정하려고 합니다.

 

이슈 템플릿, PR 템플릿을 만들고 브랜치 PR 규칙을 설정하려고 합니다.

또한 프로젝트 보드도 만들려고 합니다.

 

이슈, Pull Request(PR) 은 무엇일까?

깃허브에서 아이디어, 피드백, 작업, 버그를 추적하기 위한 기능으로 Issue(이슈)를 제공합니다.

이슈는 메인테이너(작업자)들이 작업을 위해 사용할 수 있고

오픈소스에 기여하는 사람들이 버그 문의를 하는 소통의 창구로도 사용합니다.

이슈로 새로운 제안을 할 수도 있습니다.

 

즉, 서비스 개발 작업을 위한 이슈 트래킹 도구로도 사용할 수 있으며

버그 문의를 받거나 새로운 제안을 할 수 있는 일종의 커뮤니티가 될 수 있습니다.

 

Pull Request, PR 은 한 브랜치에서 작업을 하고 나서

중심이 되는 브랜치로 작업한 걸 합치기 위해 깃허브 레포지토리에서 요청합니다.

책임자에게 결재를 받는 것과 유사한데요.

코드를 관리하는 사람들에게 중심 브랜치에 작업을 합쳐도 되는지 검토를 받습니다.

이상이 있으면 서로 소통하여 이상 증세를 PR 요청자가 해결합니다.

더 이상 이상이 없다고 판단하면 코드 관리자가 승인하여 중심이 되는 브랜치에 코드가 합쳐집니다.

 

저희 허슬 프로젝트에선 이슈를 커뮤니티보단 개발 작업에 치중하기로 했으며, 일종의 티켓처럼 발행하기로 했습니다.

티켓이라 함은 할 일(TO DO) 목록을 만들고 담당자를 배정하는 방식입니다.

이슈를 만들고 담당자를 배정하여 작업하고 이후 이슈와 관련된 PR 을 올리는 단계로 진행합니다.

 

이슈 템플릿, PR 템플릿이란?

그렇다면 이슈를 만들 때 어떻게 작성해야 할까요?

PR 을 올릴 때 어떻게 작성해야 할까요?

보통의 문서를 작성할 땐 문서마다 형식이 있습니다.

나중에 빈 칸에 채우기만 하면 되도록 꾸며져 있는데요.

 

템플릿도 마찬가지로 미리 지정된 글양식을 의미합니다.

모두가 같은 글양식을 사용하면 파악하기가 쉬울 뿐더러,

필요한 정보를 필수로 입력하게 하여 커뮤니케이션 비용이 줄어들게 됩니다.

 

허슬에서는 PM 님이 이전 프로젝트 때 했던 양식을 그대로 따르기로 했습니다.

이전 양식을 참고해 아래처럼 설정했어요!

 

출처 : https://docs.github.com/en/issues/tracking-your-work-with-issues/about-issues

 

About issues - GitHub Docs

Use GitHub Issues to track ideas, feedback, tasks, or bugs for work on GitHub.

docs.github.com

 

이슈 템플릿 양식

이슈 템플릿은 .github/ISSUE_TEMPLATE/ 디렉토리 아래에 md 파일로 생성합니다.

---
name: 티켓 이슈
about: 티켓 발행을 위한 이슈입니다.
title: ''
labels: enhancement
assignees: ''

---

### ⚠️ Issue
- 이슈 개요를 입력해주세요.

### ✏️ ToDoList
- [ ] 할 일1
- [ ] 할 일2

 

마크다운 템플릿 상단에는 --- 구분자와 함께 name, about, title, labels, assignees 등의 기본 설정이 있는데요.

직접적으로 글로 보여지진 않지만 깃허브 이슈에서 해당 설정에 맞게 자동으로 설정되도록 구성할 수 있습니다.

 

name 키는 문자열 형식으로 필수로 입력해야 합니다.

문제 양식 템플릿의 이름이고 Markdown 템플릿을 비롯한 다른 모든 템플릿에서 단 하나여야만 합니다.

 

about 키는 문자열 형식으로 필수로 입력해야 합니다.

템플릿 선택기 인터페이스에 표시되는 문제 양식 서식 파일에 대한 설명입니다.

 

템플릿 선택기 인터페이스

새로운 이슈를 만드는 버튼을 클릭하면, 템플릿이 있다면 위와 같이 템플릿 선택기 인터페이스가 나타납니다.

name 과 about 에 설정한 값이 나타나는 걸 확인할 수 있습니다.

 

title 은 기본으로 띄워줄 제목입니다. 위 템플릿에선 별도의 설정을 하지 않았습니다.

labels 은 기본으로 띄어줄 레이블입니다. 위 템플릿에선 enhancement 레이블이 기본으로 설정되도록 했습니다.

여러 개 인 경우 'Bug, Needs Triage' 처럼 콤마(,) 으로 구분합니다.

labels: bug, triage

 

assignees 은 기본으로 띄워줄 담당자입니다. 깃허브 아이디를 입력하면 됩니다.

labels 와 마찬가지로 여러 명인 경우 콤마(,) 으로 구분합니다.

 

--- 구분자 아래에는 마크다운 양식을 작성합니다.

이슈 템플릿을 선택하면 아래에 작성한 마크다운 양식이 그대로 나타나게 됩니다.

항목을 나열하고 각 항목마다 어떤 내용을 채우면 좋을지 작성했습니다.

 

출처 : https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-issue-forms

 

Syntax for issue forms - GitHub Docs

You can define different input types, validations, default assignees, and default labels for your issue forms.

docs.github.com

 

PR 템플릿 양식

.github/PULL_REQUEST_TEMPLATE.md 파일로 마크다운 템플릿을 작성할 수 있습니다.

여러 개를 작성하려면, .github/PULL_REQUEST_TEMPLATE/ 디렉토리 하위에 마크다운 파일을 넣으면 됩니다.

출처 : https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/creating-a-pull-request-template-for-your-repository

 

Creating a pull request template for your repository - GitHub Docs

When you add a pull request template to your repository, project contributors will automatically see the template's contents in the pull request body.

docs.github.com

 

## <i>PULL REQUEST</i>

### 🎋 작업중인 브랜치
- 작업 중인 브랜치를 알려주세요.

### 💡 작업동기
- 작업 배경을 알려주세요.

### 🔑 주요 변경사항
- 주요 변경사항 목록을 알려주세요.

### 🏞 스크린샷
스크린샷을 첨부해주세요.

### 관련 이슈
- 관련 이슈를 입력해주세요.

메인 브랜치에 업로드하기

템플릿 파일을 모두 작성한 뒤 메인 브랜치에 업로드를 했습니다.

업로드 이후에 템플릿 선택기 인터페이스가 나타나는 걸 확인할 수 있습니다.

 

아래는 PR 템플릿으로 작성한 실제 PR 내용입니다.

 

메인 브랜치에 브랜치 보호 규칙을 활성화해 PR 규칙 설정하기

저희가 브랜치 PR 규칙을 정할 때 리뷰어를 한 명 이상 두고 승인이 되어야지

작업을 합칠 수 있도록 규칙을 정했습니다.

이를 강제할 수 있도록 깃허브에서도 지원을 해주는데요.

브랜치별로 각기 다른 규칙들을 적용할 수 있습니다.

 

깃허브 레포지토리의 Settings > Code and automation > Branches 메뉴로 브랜치 보호 규칙을 설정할 수 있습니다.

Add rule 으로 main 브랜치에 다음과 같은 정책을 추가합니다.

main 브랜치에 추가하기 위한 규칙들

머지를 하려면, PR 을 올려야 하고 최소 1명의 승인을 받아야 한다는 규칙입니다.

이 외에도 포스 푸쉬가 가능한 지, 브랜치 삭제가 가능한 지 설정할 수 있습니다.

기본적으론 비활성화 되어 있습니다만, 많은 규칙들이 활성화시킬 수 있습니다.

 

브랜치에 코드를 머지하기 위해선 PR 을 통해야만 하는 규칙과 더불어 최소 1명의 승인을 받도록 하는 규칙 외에도

새로 리뷰해야 하는 커밋이 푸쉬되면 기존 PR 상태가 그대로여야 하는지, 새로 리뷰를 받아야하는지 설정할 수 있습니다.

기존 코드 주인에게 리뷰를 받아야만 하는지, 리뷰이를 차단할 수도 있고, 특정 사람에겐 PR 규칙이 없는 것처럼 통과시킬 수도 있습니다.

참고 : https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches#require-pull-request-reviews-before-merging

 

About protected branches - GitHub Docs

You can protect important branches by setting branch protection rules, which define whether collaborators can delete or force push to the branch and set requirements for any pushes to the branch, such as passing status checks or a linear commit history. Pr

docs.github.com

 

그 외 설정으로는 브랜치를 아예 잠글수도, 특정 브랜치에서 머지되는 걸 막을 수도 있고, 검증된 커밋만 받을 수도, Status Check 를 통과해야지만 머지할 수 있도록 할 수도 있습니다.

 

프로젝트 보드 생성

프로젝트 보드는 이번에 바뀐 뒤에 처음 써보는데요.

TO DO, IN PROGRESS, DONE 으로 이슈와 PR 현황을 보드로 확인할 수 있게 도와줍니다.

새로 리뉴얼된 프로젝트 보드에선 아래처럼 바로 만들어주더라고요..!

변경된 프로젝트 보드

 

기존에는 Column 마다 이슈가 추가되면 카드가 자동으로 등록이 된다든지 하는 옵션이 있었는데,

신 버전에서는 아예 Workflows 으로 옮겨진 것 같더라고요.

Workflows 메뉴

 

아래 처럼 여러 상황에 맞춰 이슈 또는 PR 이 생성되면 어떻게 카드가 생성이 되어야 하는지 조정할 수 있습니다.

Workflows 페이지

 

마무리

오늘은 이슈 템플릿, PR 템플릿을 만들고 브랜치 규칙 설정하고, 프로젝트 보드를 생성해보았습니다.

작업에 있어 꼭 필요하진 않지만, 효율적으로 작업 능률을 올려주고 이슈 트래킹도 가능하기에

한 번도 적용해보지 않은 분들이라면, 꼭 사용해보면 좋을 것 같네요. ☺️☺️

다음 프로젝트 일지로 돌아오겠습니다!

댓글