Github

[GitHub] issues는 무엇이고 어떻게 사용하는걸까??

녕이 2022. 9. 28. 11:21
728x90

 

 

프로젝트를 진행하면서 깃허브에서 버전 관리를 하고 있다.

그런데 다른 사람들의 레파지토리를 구경하다 보면 issues 카테고리에서 사람들이 글을 올리는 것을 확인할 수 있는데,

대체 이것이 무엇인가..!! 궁금해서 찾아보고 정리해보기로 했다~

 

issue의 사전적 의미는 논쟁, 논점이라는 것인데 즉 프로젝트를 진행하면서 발생한 논쟁할 것이라고 생각한다.

모든 소프트웨어 프로젝트는 작업을 추적(track)하고 구성(organize)하는 방법이 필요하다. → GitHub issues 사용

 

 

 

📌 GitHub Issues는 무엇인가~ 

 

먼저 간단히 말하자면, 프로젝트를 진행하면서 발생하는 모든 issue를 뜻한다.

모든 GitHub 레파지토리에서 사용 가능한 가벼운 이슈 추적 시스템(lightweight issue-tracking)이다.

레파지토리를 만들면 issues를 바로 사용할 수 있고, 프로젝트를 진행하면서 계속 사용하게 된다.

나는 그동안 issues가 뭔지도 모르고 commit, push 하기에 바빴기 때문에 (반성하자^^...) 텅 비어있다.

위에 적혀있는 것을 보니

 

"Issues는 작업관리, 버그, 기능 요청 등을 추적하기 사용된다. issues가 생성되면 검색 및 필터링 가능한 리스트에 issues가 표시된다."

 

그러니까, GitHub Issues는 버그를 보고하고 기능을 요청하는 데 사용된다. 

유저 피드백 모으기, 버그 보고, 레파지토리 내의 이슈들을 해결하고 싶은 작업을 관리하는 데 사용할 수 있다.

pull request를 issue에 연결해서 수정이 진행 중임을 알릴 수 있고, 자동으로 다른 사람이 pull request를 병합(merge)할 때 issue를 닫을 수도 있다.

 

Issues 기능은 프로젝트에서 발생하는 모든 문제를 관리할 수 있도록 하는 것이다. 깃허브는 협업을 도와주는 툴이니~

 

 


 

이제 이 Issue를 사용하는 방법에 대해서 알아보자.

 

📌 Issue 생성하기

 

이슈는 레파지토리를 생성하면 Issues 카테고리를 확인할 수 있는데, 해당 카테고리로 들어가서

New issue 버튼을 클릭한다. 

issue에 대한 제목과 내용을 작성할 수 있다. 내용은 마크다운으로 작성하고 Preview 탭을 누르면 마크다운이 적용된 텍스트를 미리보기로 볼 수 있다.

Submit new issue 버튼을 누르면 해당 이슈를 제출할 수 있는데 이렇게 생성된 이슈들은 리스트 형태로 나타난다.

그런데 이슈가 굉장히 많아지면.. 관리하기 힘들어지지 않을까? 아래의 기능을 사용하면 분류, 관리하기 좋다!

 

 

📌 기능

 

- Label 기능

각 이슈에 대해 라벨링을 해서 이슈를 검색할 수 있고 이슈별로 주제를 구분할 수 있다.

새로운 라벨도 만들 수 있고, 기본으로 있는 라벨을 사용할 수도 있다.

나누는 기준 → 우선순위, 카테고리, 정보를 나누는 기준 (작은 단위일수록 좋다)

 

- Assignees 기능

해당 이슈에 대한 책임자 부여

 

 

한번 issue 테스트를 해봤다.

이렇게 지정한 라벨과 책임자(assignee)를 통해 Filters에서 이슈 검색할 수 있다

 

 

- Milestone 기능

이정표 역할을 하고, 이슈들을 그룹화한다.

이슈는 reopen, close(이슈가 해결되면 문 닫아 close)를 할 수 있고 마일스톤으로 최대 3개까지 묶을 수 있다.

 

 


 

 

만약 레파지토리에 issues를 오랫동안 사용하고 생산성을 유지하고 싶다면 기본 관행을 따르면 좋다.

지금부터 그 관행을 살펴보자.

 

 

01. 중복을 피하기 위해 검색해보기

새로운 이슈를 제출하기 전에 이미 존재하는 이슈를 검색해보자. 시간 절약

 

이슈를 작성하려던 사람은 제출 전에 검색함으로써, 이미 비슷한 이슈 존재하면

- 해당 이슈의 상태에 대해 업데이트할 수 있다.

- 영향을 받는 다른 사용자나 프로젝트 팀이 설명했을 수 있는 해결 방법에 대해 배울 수 있다.

- 문제를 설명하는 데 시간을 할애하지 않아도 된다.

 

프로젝트 유지 관리자는 

 

- 문제를 분류하는 데 걸리는 시간을 절약

- 특정 문제에 대한 작업을 한곳에서 알릴 수 있는 모든 관련 사용자 피드백을 얻을 수 있다.

 

 

02. 이슈 보고할 때 structure 추가하고 최대한 구체적으로 작성하기

레파지토리에서 이슈를 보고하면 받아들일 준비가 된 문제와 해당 문제에 포함할 정보의 종류를 정확하게 정의해야 한다.

이를 위해 GitHub Issues에서는 이슈 템플릿을 제공한다. 설정을 변경하면 사용할 수 있다.

 

 

 

03. 라벨 사용하기

위에서도 말했지만 라벨을 사용하면 각 이슈를 분류하기도 좋고 검색하기도 편리할 뿐더러 팀 작업을 관리하기 쉽게 분리할 수 있다.

 

- 책임 별로 프로젝트를 세분화하기: 프로그램의 구조에 따라 개별 구성요소 또는 하위 시스템에 대한 라벨을 사용할 수 있다.

- 분류되지 않은 이슈 표시하기: 팀이 모든 새로운 이슈를 분류하기 위해 라벨을 사용하여 새로운 이슈에 적용할 수 있다. 그런 다음 이 라벨이 있는 모든 이슈를 검색하고 문제를 처리되면 해당 레이블을 제거해야 합니다. 분류 제목으로 표시된 이슈를 검색해도 아무것도 반환되지 않는 경우 모든 이슈를 올바르게 분류했음을 의미한다.

- 추가 정보를 기다리는 이슈를 제출자로부터 격리하기: 이슈에 대한 세부 정보가 부족한 경우, 제출자에게 세부 정보를 요청하고 추가 정보 필요와 같은 특수 레이블을 설정할 수 있습니다. 제출자가 특정 시간 내에 세부 정보를 제공하지 못하면 요청을 완료되지 않은 것으로 닫을 수 있습니다(!)

 

 

04. 관련자, 책임자 언급하기

다른 사람의 전문 지식을 활용하고 싶거나, 견적을 제공받거나, 이슈를 인지하고 싶다면 다른 사람을 언급하자.

 

- 언급할 때마다 언급하는 사람에게 전자 메일 알림이 전송되므로 언급은 조심히.

- 전에는 이슈에 관여하지 않았던 사용자를 언급할 때는 해당 사용자에게 수행할 작업이 있는지 또는 진행 상황을 알리는 작업인지 명확히 해야 한다.

 

 

05. 이슈 해결 시, 꼭 close 해주기

이슈가 해결되었는데 계속 open 해두면 사용자는 자신이 요청한 변경 사항을 인식하지 못한다. 개발자의 경우, 모든 추가적인 공개 이슈는 다음에 무엇을 해야 하는지 결정하는 것을 어렵게 한다.

 

 

 


📌 Conclusion

 

issues에 대해서 알아봤는데 협업 툴을 사용하는 이유를 알게 해 준...

버전 관리뿐만 아니라 사람들과의 커뮤니케이션을 위해 꼭 필요한 기능이라고 생각한다. 개인 프로젝트여도 사용하면 너무 좋을 거 같다.

진작 알았어야 했는데 아쉽다.

 

 

 

 

 

참고

⭐️ https://yagom.net/forums/topic/github-issue-사용하기/

 

Github Issue 사용하기 - 야곰닷넷

Issue가 무엇인가요? 프로젝트를 진행하면서 발생하는 모든 이슈를 뜻합니다. (버그 발생, 개발, 풀 리퀘스트 등등..)   […]

yagom.net

https://rewind.com/blog/best-practices-for-using-github-issues/

 

Best Practices for Using GitHub Issues - Rewind

Every software project needs a way to track and organize work. GitHub Issues is an issue-tracking system that is available in all GitHub repositories.

rewind.com

 

 

 

728x90