유랑하는 나그네의 갱생 기록

だけど素敵な明日を願っている -HANABI, Mr.children-

Study/Github

[Github] 토이 프로젝트를 위한 Issue Template & PR Template 설정 (+ Github Projects)

Madirony 2024. 12. 14. 19:23
728x90

Github

 얼마 전부터 토이 프로젝트를 시작하게 되었습니다. 1인 프로젝트라 규모는 작긴 한데, 예전 프로젝트에서 다뤄보고 싶었던 WebClient를 기반으로 매주 특정 작업을 반복적으로 실행하는 프로젝트라 꼼꼼하게 만드는 게 목표입니다! 팀 프로젝트는 Jira와 Gitlab을 기반으로 진행했었지만 이번에는 오로지 Github의 기능만을 사용해보려고 합니다. Github의 Projects에는 Jira에서 사용하는 Epic과 같은 기능이 없긴 하지만, 이슈에 도메인 명시 + 관련 요구 사항을 구체적으로 작성해 두면 충분할 것이라 생각했습니다.

 

 

Github Projects

또한 Jira에서 사용하였던 Backlog 기능도 있기 때문에 사용하는 데에는 큰 무리가 없어 보입니다. 이전 프로젝트에서는 Jira와 Gitlab을 연동할 때는 Jira의 긴 이슈번호를 커밋 메시지에 따로 적어야만 했습니다. 그래서 그 불편함을 해소하기 위해 따로 prepare-commit-msg 파일을 작성해야 했고 따로 커밋 컨벤션을 두었으나...

 

 

Commit Message Convention

..쓰는 사람만 쓰는 형태가 되어버려서 활용도가 낮아지는 경향을 보였습니다. 하지만 Github에는 커밋 메시지에 #이슈번호 형태로 작성을 해두면 해당 커밋이 이슈와 연동됩니다.

 

 

merge

그 후에 PR을 올릴 때, 해당 이슈를 close 한다는 것을 명시해 두면 merge 되었을 때 자동으로 이슈가 닫히게 됩니다. 관련 내용은 아래에서 템플릿 작성할 때 알려드리도록 하겠습니다.

 


1. Issue Template

Setting

 이슈 템플릿을 작성하는 법은 간단합니다. 먼저 Settings 메뉴에 들어갑니다.

 

 

Features -> Issues -> Set up templates

그 후, 스크롤을 내려서 Features 메뉴에 있는 Set up templates 버튼을 누릅니다.

 

 

Add template

Add template에서 Custom template을 눌러 자유롭게 마크다운 형식으로 템플릿을 구성하면 됩니다.

 

 

Preview and edit
Optional additional items

다른 건 마음대로 작성하시고 누르면 되는데 Label을 새로 추가할 때 유의할 점이 하나 있습니다.

 

 

Edit labels

Edit labels를 누르는 순간 새로운 탭으로 이동되는 게 아니라 현재 페이지에서 그대로 페이지 전환됩니다. 그러면 미처 저장하지 못한 템플릿이 날아가는 불상사가 발생합니다.. (한번 당했음)

 

 

Propose changes

그러니 Propose changes를 먼저 하거나 다른 페이지에서 Label을 추가 생성하도록 합시다.

 

 

Issues -> New Issues

이렇게 템플릿을 저장하면 새로운 이슈를 생성할 때 템플릿 목록에서 선택할 수 있습니다.

 

 

Issue Template이 적용된 모습

 


2. PR Template

.github

 Issue Template을 만들었으니 이어서 PR Template을 만들어봅시다. Repository에서 .github 폴더로 들어갑니다. 유의할 점은 이슈 템플릿을 만들면 .github/ISSUE_TEMPLATE 폴더로 이동하게 되는데 PR Template은 .github 폴더 아래에 있어야 적용됩니다.

 

 

Add file
File Path

Add file 버튼을 누르고 파일을 새로 추가하면 되는데 파일명을 작성할 때 경로도 따로 설정할 수 있으니 여기서 수정하면 됩니다.

 

pull_request_template.md

파일명은 위와 같이 작성하면 됩니다.

 

 

PR Template

PR에 해당하는 이슈 번호를 close 키워드와 함께 작성합니다. merge가 되었을 때 해당 이슈가 자동으로 close 되는 부분입니다.

  • close
  • closes
  • closed
  • fix
  • fixes
  • fixed
  • resolve
  • resolves
  • resolved

 

위에 있는 키워드 중에서 하나를 선택해서 작성해도 됩니다.

 

 

사용 예시

 

 

수동 Issue close 설정

수동으로 Issue를 선택하는 방법도 있는데 여기서 해당 이슈를 선택해도 됩니다.

 

 

아니, 근데 close 되는 이슈를 명시를 해줬는데
이슈가 닫히질 않습니다만?

 

 

이건 무슨 문제냐? merge 되는 브랜치가 default인지를 확인해야 합니다.

 

 

default branch

기본적으로 default branch는 main(master)로 설정되어 있습니다. 저는 develop에서 브랜치를 feature/1-login 브랜치를 생성하여 작업을 하고 develop에 merge 하였으므로 이슈가 자동으로 close가 되지 않았던 것입니다. 하지만 main branch에는 배포 가능한 상태만을 관리하는 브랜치이므로 개발 도중에 이슈가 자동으로 close 되기를 바란다면 develop으로 default branch 설정을 바꿔줘야 합니다.

 

 

deafult branch 변경 1

Settings -> Default branch로 이동합니다.

 

 

deafult branch 변경 2

바꾸고 싶은 브랜치를 선택하고 Update 합니다.

 

 

develop(default)

이렇게 설정하면 해당 Repository에 들어올 때 develop 브랜치로 선택됩니다. 첫 배포 버전이 만들어지면 그때 다시 바꿔놓도록 하겠습니다.

 


Github Project

Project도 따로 생성해 두면 Backlog에서 작업 현황을 볼 수 있습니다.

728x90