<aside> 💡 프로젝트 진행 시 Github issue 사용 규칙에 관하여 설명한다.

</aside>

Issue

프로젝트 완성을 위해 작업을 추적하고 구성하는 행위의 기본 단위가 된다.

이슈는 크게 다음 5가지로 분류할 수 있으며 추가적인 정보를 포함할 수 있다.

Issue 종류

기능 개발

[ Template: Feature request ]

새로운 기능을 만들거나 기존 기능을 수정할 때 발행한다.

신규 기능의 추가 이슈에는 다음 내용이 포함되어야 한다.

  1. 기능 이름
  2. 기능의 역할
  3. 기능이 필요한 이유와 사용될 상황 예시 or 기능 수정되어야 할 이유
  4. 대략적인 구현(수정) 방향
  5. 기능 구현(수정)시 주의할 점, 제약사항
  6. 실질적인 기능 구현(수정)을 위한 소단위 작업 목록
  7. 기능 구현(수정)에 사용될 수 있는 관련 기술

버그 리포트

[ Template: Bug report ]

완성 또는 제작중인 기능에 예상치 못한 버그가 있는 경우 발행한다.

버그 리포트에는 다음 내용이 포함되어야 한다.

  1. 버그가 발생한 기능
  2. 버그를 재현하는 절차
  3. 버그가 없을 때의 기대결과

리팩토링

[ Template: Refactoring ]

이미 구현된 기능에 대해 외부 노출되는 호출 방식은 유지하고 내부 구조만 개선할 때 발행한다.

리팩토링 에는 다음 내용이 포함되어야 한다.

  1. 리팩토링 대상 기능
  2. 리팩토링 하는 이유
  3. 리팩토링 할 구체적인 클래스, 메소드, 화면 등
  4. 내부구조 개선 방향

테스트 필요

[ Template: Test ]

특정 파트에서 하는 작업으로는 테스트가 불가능 하여 다른 파트의 도움이 필요한 경우 발행한다. 테스트가 필요한 부분에 대한 1차적인 구현이 완료되어 있어야 한다.

  1. 테스트 할 대상 기능
  2. 테스트 구성 환경
  3. 입력값과 출력값에 대한 대략적인 나열

기타

[ Template: Etc ]

위의 내용에 포함되지 않는 모든 내용에 해당한다. 대표적으로 빌드 스크립트 수정, 배포 환경설정, 문서 작성 등이있다.

Issue 추가정보

다음은 Github Issue 를 이용할 때 모든 이슈에 공통으로 표현할 수 있는 내용들로 이슈에 추가적인 정보를 나타내기 위해 사용한다. 이슈가 많아질 경우 필터링에 사용할 수 있다.

강제로 써야하는 값은 아니지만 해당 이슈에 적합한 추가정보가 있는 경우 사용하도록 한다.

Label

이슈에 태그 처럼 달아 두는 것으로 다음의 라벨 중 알맞는 것을 사용한다. 한 이슈에 여러개를 사용할 수 있다.

bounded: backend → 백엔드와 관련 있는 경우 사용

bounded: frontend → 프론트엔드와 관련 있는 경우 사용

type: 🐞bug → 버그엔 대한 보고일 경우 사용

type: 🤔discussion → 의논할 주제 또는 해당 내용에 팀원들의 의견이 필요한 경우 사용

type: 📃docs → 개발 문서와 관련 있는 경우 사용

type: 🔨feature → 기능 개발(구현, 수정 등)과 관련이 있는 경우 사용

type: ❓question → 질문거리인 경우 사용

type: 🛠refactoring → 리팩토링인 경우 사용

type: ✅test → 테스트 관련 도움이 필요한 경우 사용

Assignee

해당 이슈를 해결할 사람을 명시한다. 필요에 따라 직접 작업하지 않더라도 관련이 있는 경우 함께 명시한다. 해당 작업(또는 의논거리)의 책임자를 결정한다.

Milestones

해당 이슈가 특정 마일스톤 단위에 속하는 경우 명시한다. 이슈가 프로젝트의 어떤 부분에 영향을 주는지 파악하는 것과 마감 기한을 정하는데 도움을 준다.

프로젝트 진행과 Github Issue

프로젝트 진행시 다음 원칙을 가급적 준수한다.

  1. 코딩, 배포 환경 설정, 화면 구성 등 프로그램에 영향을 주는 모든 행위는 이슈 발행 후 해당 내용에 맞게 작업한다.
  2. 회의는 결과는 하나 또는 여러개의 이슈로 표현되어야 한다.
  3. type: 🤔discussion 라벨이 붙은 이슈는 회의 시에 다룰 수 있다.
  4. 회의를 통해 결론 내린 이슈 또는 작업이 완료된 이슈는 바로바로 닫는다. (작업이 완료된 이슈는 구현, 수정한 내용이 프로젝트에 반영된 경우를 말함)
  5. 팀 구성원 전원은 회의와 작업의 시작 전에 Github Issue 를 확인한다.