[WEB] github issue, milestone 무엇일까



github는 형상관리도구로서 코드 버전 관리에 매우 용이하다.
github 생태계가 점점 커지면서 github는 버전 관리 이외에 매우 유용한 기능들을 제공하는데 오늘은 대표적인 기능인 issue와 milestone에 대해 알아보자.

1. Issue란 무엇일까?

모든것이 이슈라고 볼 수 있다.
새롭게 추가될 가능, 개선 해야할 가능, 버그 등등 모든 것을 이슈라고 생각하면 된다.
작업자의 모든 활동 내역에 대해서 이슈를 등록하고 그 이슈를 기반으로 작업을 진행하면 된다.
하나의 기능을 위해 하나의 branch를 생성하여 작업하듯 그 branch의 생성목적을 issue라고 생각하면 될 것 같다.

사용자 이메일이 필요한 이슈가 생겼어!
그래? 그렇다면 새로운 기능을 만들어야겠군!
새로운 이슈를 등록하고
이 이슈를 해결할 브랜치를 만들어 작업하자!


참고로 이슈번호를 커밋에 입력하면 해당 커밋에 이슈가 배당되어 관리가 더욱 쉬워진다.
따라서 나는 앞으로 branch명을 "이슈번호-이슈내용"으로 구성할 예정이다.


2. milestone이란 무엇일까?

이슈가 하나의 기능을 담당한다면 마일스톤은 내 작업 방향의 이정표이다.

마일스톤의 유래는 고대 로마 시대로부터 시작됐는데 아우구스투스 황제 시절, 그들은 로마의 길에 1마일마다 돌을 세워서 표시를 했다고 한다.
이 돌은 여행자들이 그들이 현재 로마의 길에 있다는 것을 인지하게 하고, 두 지점간의 평균적이 거리 감각을 갖게 하기 위해서 존재했다고 한다.

마일스톤은 프로젝트에서 중요한 이벤트를 표시하는 기준점이며 프로젝트의 진행도를 파악하기 이해 사용된다.
만약 내 프로젝트가 A > B > C > D 의 과정을 거쳐 만들어져야한다면
각각의 A, B, C, D 마일스톤을 만들고
각각의 마일스톤에 이슈를 붙여가며 현재 내 프로젝트의 진행을 파악하는 용도인 것이다. 
한 마일스톤에는 여러개의 이슈가 등록될 수 있다.
마일스톤 : 이슈 > N : 1 관계!

3. 이슈 생성하기

db문제점 이슈를 만들고자하는 레파지토리에 들어가 상단메뉴의 Issues를 들어간다.
초록색의 New Issue 클릭!

db문제점 title, description을 입력한다.
description은 마크다운 언어로 작성 가능하다.
우측에는

  • Assignees : 위탁인, 검토인으로 이슈를 관리할 사람, 봐줬으면 하는 사람을 지정한다.
  • Lebels : 해당 이슈에 해당하는 Tags를 지정한다. 개발분야(server/client), 목적, 중요도 등
  • Projects : 해당 이슈를 담을 Project를 지정한다.
  • Milestone : “이정표”라는 뜻으로 해당 이슈를 담을 마일스톤을 선택한다. 한 이슈당 최대 하나의 마일스톤만 지정이 가능하다.

db문제점 다음과 같이 이슈가 생성됐다면 성공!


4. 마일스톤 생성하기

db문제점 이슈를 만들었던 그 화면 그대로 우측에 Milestones를 클릭한다. db문제점 Create a Milestone 클릭! db문제점 Title과 기간, Description을 입력한다. db문제점 모두 입력하였다면 하단에 Create a Milestone 클릭! db문제점 짠! 마일스톤이 성공적으로 생성된 모습을 볼 수 있다!

5. 이슈-마일스톤 연결하기

위에서 말했듯이 한 이슈당 최대 한개의 마일스톤만 지정이 가능하다
이슈 : 마일스톤이 1:n 관계라고 이해하면 좋을 것 같다.
이제 아까 만들었던 이슈에 들어가 우측 메뉴바에 Milestone을 찾는다. db문제점 그림과 같이 Set milestone으로 아까 만들었던 마일스톤을 지정해준다. db문제점 그럼 해당 이슈와 마일스톤이 잘 연동된 모습을 볼 수 있다!

6. 활용하는 방법은?

db문제점 이슈에 따른 마일스톤 변화를 보여주기 위해 test용으로 만든 이슈를 close시켰다.
좌측 마일스톤을 보면 0이었던 바가 초록색으로 100까지 채워진 걸 볼 수 있다.
(해당 마일스톤에 해당 1개의 이슈만 지정되었기 때문) db문제점
마일스톤으로 가보자.
이 마일스톤에는 #3번의 이슈만 지정되었기때문에 #3의 이슈가 close된 순간 해당 마일스톤도 모두 완료가 된 모습을 볼 수 있다.
막대기 아래 Edit Close Delete 버튼을 통해 해당 마일스톤을 제어 가능하다.

이처럼 이슈와 마일스톤을 통해 프로젝트를 진행하며 이슈 관리 및 작업 진행도 파악이 가능하다!


7. Label 이란?

issue와 pull request를 작성하다보면 우측에 Lebels를 확인할 수 있다.
라벨은 쉽게 Tag라고 생각하면 된다.
내가 작성한 이슈와 풀리퀘스트가 어떤 특징을 갖고 있는지, 어떠한 상태인지를 태깅하여 라벨링 하는 것이다.
이슈명, pr명이 너무 길어지면 가독성이 떨어지므로 공통적이면서 태그로 관리하기 좋은 내용은 라벨로 표현하면 좋다.

  • 서버작업인지, 클라이언트 작업인지
  • 중요도
  • 기능 개선인지, 기능 추가인지

등등의 본인이 작업하며 필요한 태깅을 추가하면 된다.
깃헙에서 기본적으로 제공하지만 필요하다면 커스터마이징이 가능하다!

(내 프로젝트에 사용할 label은 추후 정리하여 다시 올릴 예정이다.)

오늘 알아본 이슈, 마일스톤, 라벨을 사용하며 github 활용도를 높여 개발을 쾌적하게 해보자!