깃허브에서 이슈(Issue)는 프로젝트를 진행하면서 발생하는 다양한 이벤트들을 의미한다. 발견된 버그나 추가할 기능, 개발해야할 새로운 이슈나 설계사항들을 이슈로 만들어서 동료들과 협업을 진행할 수 있다.
참고로 깃허브의 공식 문서에서 이슈는 다음과 같이 정의하고 있다.
Use GitHub Issues to track ideas, feedback, tasks, or bugs for work on GitHub.
Issues let you track your work on GitHub, where development happens
깃허브 이슈
깃허브 이슈 생성
개발자는 깃허브 저장소 페이지의 이슈 탭에서 새로운 이슈를 생성할 수 있다. 이 때, 개발자는 해당 저장소에 이슈를 생성할 수 있는 권한을 가지고 있어야한다.
녹색 버튼을 누르면 새로운 깃허브 이슈를 생성할 수 있는 페이지가 로드된다.
신규 깃허브 이슈의 제목(Title)과 내용을 작성하면 'Submit new issue'가 활성화된다.
신규 깃허브 이슈 작성 화면의 오른쪽을 보면 이슈와 관련된 다양한 기능들을 확인할 수 있다. 우선 이슈의 Assignees를 지정할 수 있다. 이 이슈에 대한 책임자(?) 정도의 사용자를 지정하여 이슈 해결과 커뮤니케이션을 주도할 수 있다. Assignees는 두 사람 이상 여러명을 지정할 수도 있다. (현재 깃허브 버전에서는 최대 10명까지 지정할 수 있다)
특정 유저가 Assign 되어 있는 이슈만 따로 검색할 수도 있다.
깃허브 이슈 닫기
해결된 이슈는 'Close issue' 버튼을 눌러서 닫아줘야한다. 그래야 해결되지 않은 이슈에 집중할 수 있다. 열려 있는 이슈가 0개인 상황이 즐겁게 느껴진다.
이슈가 닫혔다고해서 삭제되는 것은 아니다. Closed 상태의 이슈들은 나중에도 볼 수 있다. 이는 코드의 히스토리를 확인하기 위해 매우 중요하다.
깃허브 이슈 삭제
물론 이슈를 삭제할 수도 있다.
이슈 페이지의 우측 하단을 보면 'Delete issue' 버튼을 볼 수 있다. 이 버튼을 누르면 이슈가 삭제된다. 이슈를 삭제하면, 이슈에 대한 내용이 완전히 지워지며 나중에 다시 볼 수도 없다. 히스토리를 남기기 위해서는 Delete issue 보다는 Close 하는 것이 좋다.
깃허브 이슈 이전
이슈를 다른 저장소로 이전(Transfer) 할 수도 있다. Delete issue 메뉴 바로 위에 있는 Transfer issue를 누르면 해당 이슈를 다른 저장소로 이전시킬 수 있다.
이전할 저장소를 선택할 수 있다. 사용자 문의나 사용자로부터 받은 버그를 내부 작업용으로 돌리거나 내부 저장소에서 다루던 이슈를 공론화 시키고 싶을 때 사용할 수 있다.
깃허브 이슈 핀하기
몇몇 중요한 이슈는 핀을 해놓을 수 있다. 마찬가지로 이슈 페이지 오른쪽 하단에 있는 Pin Issue 메뉴를 선택하면 된다.
그러면 이슈 탭 상단에 핀한 이슈가 먼저 보인다. 이슈가 많아져서 다음 페이지로 중요한 이슈가 넘어간 경우에 Pin을 해놓으면 바로 위에서 볼 수 있다. 프로젝트 진행 사항 페이지나 중요한 설계 이슈, 꼭 논의해야하는 이슈 등을 Pin해서 위로 올릴 수 있다.
깃허브 이슈 라벨 생성
저장소에서 발생하는 다양한 이벤트, 협업거리들이 이슈로 만들어진다. 따라서 다양한 종류의 이슈가 생성되어 이슈 탭에 섞인다. 각 이슈가 어떤 종류인지 구별하기 위해 라벨(Label) 기능을 사용할 수 있다.
이슈에 라벨을 붙여 놓으면 각 이슈가 버그인지 문서작성을 위한 이슈인지 등을 빠르게 확인할 수 있다. 특정 라벨이 붙은 이슈만 따로 검색할 수도 있다.
이슈에 붙일 라벨은 새로 추가하거나 제거, 편집할 수 있다.
이슈 탭에서 'Labels' 버튼을 누르면 편집할 수 있는 페이지가 뜬다.
여기에서 'New Label' 버튼을 눌러서 새로운 라벨을 추가할 수도 있고, 각 라벨 오른쪽 끝에 점 세개짜리 버튼을 눌러서 기존 라벨을 지우거나 편집할 수도 있다.
깃허브 이슈 마일스톤 생성
유사한 이슈들을 하나로 모아 일정관리를 할 수 있는 마일스톤('Milestone') 기능도 제공된다.
깃허브의 마일스톤 기능은 '스프린트(Sprint)' 개발 방법론을 지원하기 위한 기능이다. 개발 목표를 마일스톤으로 만들어 두고, 관련된 이슈들을 생성한다. 마일스톤은 엮여 있는 이슈들의 Open, Close 상태를 추적하여 전체 이슈 중 몇 개의 이슈가 Close 되었는지 추적해서 마일스톤의 진척상황으로 퍼센트로 보여준다.
새로운 마일스톤은 이슈 탭의 'Milestone' 버튼을 이용해서 생성할 수 있다. 마일스톤은 'Due date'를 설정해놓을 수도 있다. 이 때까지 어떤 일(이슈)들을 해야하는지 한눈에 파악할 수 있으며, 마일스톤 단위로 일의 진척도를 관리할 수 있다.
깃허브 이슈 템플릿 만들기
깃허브는 새로 생성되는 이슈에 '템플릿' 기능을 제공한다. 비슷한 종류의 이슈의 경우, 이슈 내용 구성이 비슷하다. 예를 들어 버그 리포트의 경우 버그가 발생한 바이너리, 버전, 버그 현상, 재현 시나리오 등이 이슈에 나와야한다. 버그의 종류와 상관없이 이런 레이아웃을 지켜야 협업하기가 편하다.
깃허브는 이슈를 위한 템플릿 등록을 지원하고 있다. 깃허브 저장소의 'Settings' 탭으로 들어가보자.
Settings 탭의 'Features' 항목을 보면, 'Issues' 라는 부분이 있고 'Set up templates 라는 버튼이 있다. 이 버튼을 누르면 이슈 템플릿을 등록할 수 있는 화면이 나온다.
최초에는 등록된 이슈 템플릿이 없어서 이런 화면이 나온다. 'Add template: select'를 클릭하면
추가할 이슈 템플릿의 타입이 나온다. 버그 리포트를 위한 템플릿과 기능 추가 요쳥을 위한 템플릿 그리고 그 밖에 사용자들이 쓸 수 있는 템플릿이 있다.
위와 같이 하나씩 추가해나가면 된다. 'Preview and edit' 버튼을 눌러서 추가한 템플릿을 수정할 수 있다.
적당하게 템플릿 컨텐츠와 이름, 설명을 추가해준다.
템플릿 수정이 끝나면 우측 상단에 있는 'Propose changes' 버튼을 눌러서 변경 사항을 반영해준다.
이슈 탭에서 새로운 이슈를 등록하기 위해 'New Issue' 버튼을 누르면
어떤 타입의 템플릿을 사용할 지 선택할 수 있는 메뉴가 나온다. 버그 리포트를 위해서 이슈 등록을 하려고 했으면, Bug report 항목의 'Get started' 를 눌러서 이슈 생성을 진행한다.
그러면 새로 이슈를 등록하는 화면이 나오고 텍스트 영역에 템플릿으로 등록해 놓은 내용들이 출력된다.
댓글