GitHub PR & Issue Template 생성 방법
GitHub에서 PR & Issue Template 생성 방법에 대해 정리한 페이지입니다.
Tags
Git, GitHub
1. 개요
GitHub에서 PR & Issue Template 생성 방법에 대해 정리한 페이지입니다.
2. GitHub Labels 설정하기
Template을 생성하기 전에 먼저 다음과 같이 GitHub Repository에서 Label을 설정하기를 권장합니다. Label은 PR과 Issue에서 카테고리를 분류하기 위해 사용합니다. 다음과 같이 Conventional Commits 규칙에서 사용하는 git type을 작성합니다.
| Label name | Description | Commit Message Example | Color |
|---|---|---|---|
| build | 빌드 시스템이나 외부 종속성 관련 파일 수정 (Changes to build system or dependencies) | build: configure webpack settings | #8A2BE2 |
| chore | 빌드 작업, 패키지 매니저 설정 등 기타 수정 (Other maintenance tasks) | chore: update dependencies | #79FA9D |
| ci | CI/CD 설정 변경 (Changes to CI/CD configuration) | ci: add GitHub Actions workflow | #5319E7 |
| docs | 문서 추가 및 수정 (Documentation changes) | docs: update README installation guide | #0052CC |
| feat | 새로운 기능 추가 (New feature) | feat: add user login feature | #1D76DB |
| fix | 버그 수정 (Bug fix) | fix: resolve login API error | #D93F0B |
| perf | 성능 향상을 위한 코드 변경 (Performance improvements) | perf: optimize image loading | #C2E0C6 |
| refactor | 버그 수정이나 기능 추가 없는 코드 리팩토링 (Code refactoring without feature changes or bug fixes) | refactor: simplify auto logic | #07F680 |
| revert | 이전 commit 되돌리기 (Revert previous commit) | revert: revert "feat: add user login feature" | #B60205 |
| style | 코드 포맷팅, 세미콜론 누락 등 코드 스타일 변경 (Code style changes, formatting only) | style: format code with prettier | #F7C6C7 |
| test | 테스트 코드 추가 및 수정 (Adding or updating tests) | test: add unit tests for login service | #FBCA04 |
추가적으로 Bug Report에서 사용할 bug label을 추가합니다.
| Label name | Description | Color |
|---|---|---|
| bug | 버그 (Bug) | #FF0000 |
3. PR Template 생성하기
먼저 다음과 같이 프로젝트 최상위 폴더에서 .github 폴더를 생성한 후 해당 폴더에서 pull_request_template.md 파일을 생성합니다.
pull_request_template.md 파일을 생성한 후 PR Template을 작성하면 됩니다. 다음은 PR Template 예시입니다.
1- 제목: feat: 기능명
2 Ex. feat: add user login feature
3
4-- 절취선 위 부분의 내용은 모두 삭제하고 PR을 작성해 주세요. --
5
6----- 절취선 -----
7
8## ☑️ 개발 유형
9
10- [ ] Front-end
11- [ ] Back-end
12
13## ✔️ PR 유형
14
15- [ ] build: 빌드 시스템이나 외부 종속성 관련 파일 수정 (Changes to build system or dependencies)
16- [ ] chore: 빌드 작업, 패키지 매니저 설정 등 기타 수정 (Other maintenance tasks)
17- [ ] ci: CI/CD 설정 변경 (Changes to CI/CD configuration)
18- [ ] docs: 문서 추가 및 수정 (Documentation changes)
19- [ ] feat: 새로운 기능 추가 (New feature)
20- [ ] fix: 버그 수정 (Bug fix)
21- [ ] perf: 성능 향상을 위한 코드 변경 (Performance improvements)
22- [ ] refactor: 버그 수정이나 기능 추가 없는 코드 리팩토링 (Code refactoring without feature changes or bug fixes)
23- [ ] revert: 이전 commit 되돌리기 (Revert previous commit)
24- [ ] style: 코드 포맷팅, 세미콜론 누락 등 코드 스타일 변경 (Code style changes, formatting only)
25- [ ] test: 테스트 코드 추가 및 수정 (Adding or updating tests)
26
27## 📝 작업 내용
28
29> 이번 PR에서 작업한 내용을 간략히 설명해 주세요.
30
31- [x] 구현한 기능 1
32- [x] 구현한 기능 2
33
34## 📸 스크린샷 (선택)
35
36> 작업한 내용에 대한 스크린샷이 있다면 여기에 첨부해 주세요.
37
38## #️⃣ Related Issue
39
40> 해당 Pull Request과 관련된 Issue Link를 작성해 주세요.
41
42Ex. close #123해당 Template 구조에 대해 설명하자면 다음과 같습니다.
☑️ 개발 유형
개발 유형이Front-end인지, 아니면Back-end인지를 명시하는 부분입니다.✔️ PR 유형
해당 PR이 어떤 작업 유형인지를 명시하는 부분입니다. 미리 정해둔 Label 목록 중에서 선택하면 됩니다.📝 작업 내용
해당 PR에서 작업한 내용을 간단하게 작성하는 부분입니다.📸 스크린샷 (선택)
해당 PR에서 작업한 내용에 대한 스크린샷을 첨부하는 부분입니다.#️⃣ Related Issue
해당 PR과 관련된 Issue Link를 작성하는 부분입니다. 해당 PR이 default branch에 merge될 때 자동으로 닫을 Issue 목록을 작성하면 됩니다.
PR Template을 사용하여 생성한 PR 예시는 다음과 같습니다.
4. Issue Template 생성하기 (Markdown)
Issue Template은 GitHub Repository에서 직접 생성하거나, 아니면 VSCode에서 만들 수 있습니다.
4.1. GitHub Repository에서 생성하기
먼저 GitHub Repository에서 Setting 탭을 클릭합니다.
이후 Features 항목에서 Issues 부분의 Set up templates 버튼을 클릭합니다.
Add template: select 버튼을 클릭하여 생성하고자 하는 Issue Template을 선택하면 됩니다.
4.2. VSCode에서 생성하기
먼저 다음과 같이 프로젝트 최상위 폴더에서 .github 폴더를 생성한 후
해당 폴더 내에 ISSUE_TEMPLATE 폴더를 생성한 후 bug_report.md, feature_request.md 파일을 생성합니다.
4.2.1. bug_report.md 생성하기
bug_report.md 파일을 열고 다음과 같이 작성할 수 있습니다.
1---
2name: 🐞 Bug Report
3about: Create a report to help us improve this project
4title: "bug: 버그 설명"
5labels: bug
6assignees: ""
7---
8
9## ❓ 어떤 버그인가요?
10
11> 어떤 버그인지 설명해 주세요.
12
13## 🖥️ 발생 환경
14
15> 버그가 발생한 환경을 작성해 주세요.
16
17- OS: (Ex. Windows, macOS, Ubuntu)
18- Browser: (Ex. Chrome, Firefox)
19- Version: (Ex. v1.0.3)
20
21## 📝 예상 결과
22
23> 예상했던 정상적인 결과가 어떤 것이었는지 설명해 주세요.
24
25## 📚 참고할 만한 자료 (선택)
26
27> 추가적으로 참고할 만한 사항이 있으면 적어 주세요.
28> 없는 경우 해당 단락을 삭제해 주세요.4.2.2. feature_request.md 생성하기
feature_request.md 파일을 열고 다음과 같이 작성할 수 있습니다.
1---
2name: ✨ Feature Request
3about: Suggest an idea for this project
4title: "feat: 기능 설명"
5labels: feat
6assignees: ""
7---
8
9## ❓ 어떤 기능인가요?
10
11> 추가 요청하려는 기능에 대해 설명해 주세요.
12
13## 🎯 목적
14
15> 추가하려는 기능의 목적을 작성해 주세요.
16
17## ✅ TODO
18
19> 구현해야 하는 기능에 대해 체크리스트를 작성해 주세요.
20
21- [ ] TODO 1
22- [ ] TODO 2
23
24## 📚 참고할 만한 자료 (선택)
25
26> 추가적으로 참고할 만한 사항이 있으면 적어 주세요.
27> 없는 경우 해당 단락을 삭제해 주세요.5. Issue Form 생성하기 (YAML)
Issue Form은 텍스트 입력, 드롭다운, 확인란 및 파일 업로드를 비롯한 여러 필드 형식을 지원하며, 폼 UI로 입력을 강제할 수 있어 협업 품질을 크게 향상시킬 수 있습니다.
먼저 다음과 같이 프로젝트 최상위 폴더에서 .github 폴더를 생성한 후
해당 폴더 내에 ISSUE_TEMPLATE 폴더를 생성한 후 bug_report.yml, feature_request.yml 파일을 생성합니다.
5.1. bug_report.yml 생성하기
bug_report.yml 파일을 열고 다음과 같이 작성할 수 있습니다.
1name: 🐞 Bug Report
2description: Create a report to help us improve this project
3title: "bug: 버그 설명"
4labels: bug
5body:
6 - type: textarea
7 id: what-happened
8 attributes:
9 label: ❓ 어떤 버그인가요?
10 description: 어떤 버그인지 설명해 주세요.
11 validations:
12 required: true
13 - type: dropdown
14 id: severity
15 attributes:
16 label: 🚨 심각도
17 description: 버그의 심각도를 선택해 주세요.
18 options:
19 - critical (서비스 불가)
20 - major (핵심 기능 오류)
21 - minor (경미한 문제)
22 validations:
23 required: true
24 - type: dropdown
25 id: os
26 attributes:
27 label: 🌏 OS
28 description: 버그를 확인한 운영체제를 선택해 주세요.
29 options:
30 - Windows
31 - macOS
32 - Ubuntu
33 validations:
34 required: true
35 - type: dropdown
36 id: browsers
37 attributes:
38 label: 🖥️ Browsers
39 description: 버그를 확인한 브라우저를 선택해 주세요.
40 multiple: true
41 options:
42 - Firefox
43 - Chrome
44 - Safari
45 - Microsoft Edge
46 default: 0
47 validations:
48 required: true
49 - type: input
50 id: version
51 attributes:
52 label: 🆔 Version
53 description: 버그를 확인한 버전을 입력해 주세요.
54 placeholder: Ex. v1.0.3
55 validations:
56 required: true
57 - type: textarea
58 id: expected-result
59 attributes:
60 label: 📝 예상 결과
61 description: 예상했던 정상적인 결과가 어떤 것이었는지 설명해 주세요.
62 validations:
63 required: true
64 - type: textarea
65 id: references
66 attributes:
67 label: 📚 참고할 만한 자료 (선택)
68 description: 추가적으로 참고할 만한 사항이 있으면 적어 주세요.
69 validations:
70 required: false5.2. feature_request.yml 생성하기
feature_request.yml 파일을 열고 다음과 같이 작성할 수 있습니다.
1name: ✨ Feature Request
2description: Suggest an idea for this project
3title: "feat: 기능 설명"
4labels: feat
5body:
6 - type: textarea
7 id: feature
8 attributes:
9 label: ❓ 어떤 기능인가요?
10 description: 추가 요청하려는 기능에 대해 설명해 주세요.
11 validations:
12 required: true
13 - type: textarea
14 id: purpose
15 attributes:
16 label: 🎯 목적
17 description: 추가하려는 기능의 목적을 작성해 주세요.
18 validations:
19 required: true
20 - type: textarea
21 id: todo
22 attributes:
23 label: ✅ TODO
24 description: 구현해야 하는 기능에 대해 체크리스트를 작성해 주세요.
25 value: |
26 - [ ] TODO 1
27 - [ ] TODO 2
28 validations:
29 required: true
30 - type: textarea
31 id: references
32 attributes:
33 label: 📚 참고할 만한 자료 (선택)
34 description: 추가적으로 참고할 만한 사항이 있으면 적어 주세요.
35 validations:
36 required: false6. 참고 자료
- Conventional Commits
- 리포지토리에 대한 끌어오기 요청 템플릿 만들기 - GitHub 문서
- 리포지토리에 대한 문제 템플릿 구성 - GitHub 문서
- 이슈 양식 구문 - GitHub 문서
- GitHub 형식 스키마 구문 - GitHub 문서