GitHub Projects와 Issues로 태스크 관리하기
GitHub의 Projects(프로젝트 보드)와 Issues(이슈)를 활용하면 별도의 프로젝트 관리 도구 없이도 태스크를 체계적으로 관리할 수 있습니다.
전체 구조
Organization / Repository
├── Issues ← 개별 태스크·버그·요청
├── Projects ← 칸반 보드 / 테이블로 이슈들을 관리
└── Milestones ← 릴리스·스프린트 단위 그룹핑
Part 1: Issues — 태스크 단위 관리
이슈 생성하기
- 저장소 → Issues 탭 → New issue
- 제목과 설명 작성
- 오른쪽 사이드바에서:
- Assignees — 담당자 지정
- Labels — 분류 (bug, enhancement, documentation 등)
- Milestone — 릴리스/스프린트 연결
- Projects — 프로젝트 보드에 추가
이슈 안에 태스크 목록 만들기 (Task List)
이슈 본문에 마크다운 체크박스를 쓰면 하위 태스크로 인식됩니다.
## 할 일
- [ ] DB 스키마 설계
- [ ] API 엔드포인트 구현
- [ ] 프론트엔드 폼 연동
- [ ] E2E 테스트 작성
이렇게 작성하면:
- 이슈 목록에서 진행률 바 (2/4 완료 등)가 표시됩니다.
- 각 체크박스를 클릭해 완료 처리할 수 있습니다.
태스크를 개별 이슈로 변환
큰 태스크는 체크박스 항목을 별도 이슈로 변환할 수 있습니다.
- 이슈 본문의 체크박스 항목에 마우스를 올리면 오른쪽에 ⊕ 아이콘 등장
- 클릭 → Convert to issue 선택
- 하위 이슈가 생성되고, 원래 체크박스에 이슈 링크가 자동 연결됩니다.
이슈 템플릿 만들기
팀에서 반복되는 이슈 형식이 있다면 템플릿을 만들어두세요.
- 저장소 → Settings → Features → Issues → Set up templates
- Bug report / Feature request / Custom 중 선택
.github/ISSUE_TEMPLATE/에 마크다운 파일이 생성됩니다.
---
name: 버그 리포트
about: 버그를 신고합니다
title: "[Bug] "
labels: bug
assignees: ''
---
## 재현 절차
1. ...
2. ...
## 기대 동작
## 실제 동작
## 스크린샷 (선택)
CLI로 이슈 관리
# 이슈 목록 (열려있는 것만)
gh issue list
# 라벨 필터
gh issue list --label bug
# 이슈 생성
gh issue create --title "로그인 오류" --body "500 에러 발생" --label bug --assignee @me
# 이슈에 코멘트 추가
gh issue comment 42 --body "원인 파악 완료, PR 올리겠습니다"
# 이슈 닫기
gh issue close 42
Part 2: Projects — 보드로 전체 현황 관리
GitHub Projects(v2)는 이슈와 PR을 칸반 보드, 테이블, 로드맵 등 다양한 뷰로 관리할 수 있는 기능입니다.
프로젝트 생성
- GitHub 상단 → Projects 탭 → New project
- 템플릿 선택:
- Board — 칸반 스타일 (추천)
- Table — 스프레드시트 스타일
- Roadmap — 타임라인 스타일
칸반 보드 구성
기본 컬럼:
| 컬럼 | 용도 |
|---|---|
| Todo | 아직 시작 안 한 태스크 |
| In Progress | 진행 중인 태스크 |
| Done | 완료된 태스크 |
필요에 따라 컬럼을 추가할 수 있습니다:
- Backlog — 우선순위 낮은 항목
- In Review — PR 리뷰 대기 중
- Blocked — 다른 작업에 의존
이슈를 프로젝트에 추가하는 방법
방법 1: 이슈 페이지에서
- 이슈 오른쪽 사이드바 → Projects → 프로젝트 선택
방법 2: 프로젝트 보드에서
- 보드 하단 + Add item → 이슈 번호 또는 제목으로 검색 → 추가
방법 3: CLI에서
# 프로젝트 목록 확인
gh project list
# 이슈를 프로젝트에 추가
gh project item-add PROJECT_NUMBER --owner OWNER --url https://github.com/org/repo/issues/42
커스텀 필드 활용
프로젝트에 사용자 정의 필드를 추가해 태스크를 더 세밀하게 관리할 수 있습니다.
| 필드 타입 | 예시 |
|---|---|
| Single select | 우선순위 (High / Medium / Low) |
| Date | 마감일 |
| Number | 예상 소요 시간 (h) |
| Iteration | 스프린트 (Sprint 1, Sprint 2, …) |
| Text | 메모 |
추가 방법: 프로젝트 → Settings (⚙) → Custom fields → New field
자동화 (Workflows)
프로젝트 보드의 워크플로 기능으로 반복 작업을 자동화할 수 있습니다.
프로젝트 → Settings → Workflows 에서 켜세요:
| 워크플로 | 동작 |
|---|---|
| Item added to project | 새 이슈가 프로젝트에 추가되면 → Todo 컬럼으로 |
| Item closed | 이슈가 닫히면 → Done 컬럼으로 자동 이동 |
| Pull request merged | PR이 머지되면 → Done으로 |
| Auto-add to project | 특정 라벨의 이슈가 생기면 자동으로 프로젝트에 추가 |
뷰(View) 활용
하나의 프로젝트에서 여러 뷰를 만들어 관점별로 볼 수 있습니다.
프로젝트
├── Board 뷰 — 상태별 칸반
├── Table 뷰 — 전체 이슈를 테이블로
├── 내 태스크 뷰 — 필터: assignee = @me
└── 이번 주 뷰 — 필터: iteration = current
뷰 추가: + New view → 보드/테이블/로드맵 중 선택 → 필터·그룹핑·정렬 설정
Part 3: 실무 워크플로 예시
스프린트 기반 태스크 관리
1. 스프린트 시작
→ 프로젝트의 Iteration 필드에 "Sprint 5" 추가
→ Backlog에서 이번 스프린트 할 이슈들을 Todo로 이동, Iteration 설정
2. 일일 확인
→ 보드 뷰에서 In Progress 항목 체크
→ 막힌 이슈는 Blocked 컬럼으로 이동 + 코멘트
3. 작업 완료
→ PR 머지 시 이슈 자동 닫힘 (커밋 메시지에 "Closes #42")
→ Workflow가 자동으로 Done 컬럼으로 이동
4. 스프린트 종료
→ 테이블 뷰에서 Iteration = "Sprint 5" 필터
→ 완료/미완료 집계 확인
이슈 + 태스크 리스트 조합
대형 기능을 관리할 때:
<!-- 에픽 이슈: "사용자 인증 시스템 구현" -->
## 태스크
- [ ] #51 DB 스키마 설계
- [ ] #52 회원가입 API
- [ ] #53 로그인 API
- [ ] #54 비밀번호 재설정
- [ ] #55 프론트엔드 로그인 폼
- [ ] #56 E2E 테스트
에픽 이슈에서 진행률 바로 전체 현황을 한눈에 확인할 수 있습니다.
CLI 요약
# --- Issues ---
gh issue list # 이슈 목록
gh issue create --title "제목" --label bug # 이슈 생성
gh issue view 42 # 이슈 상세
gh issue close 42 # 이슈 닫기
gh issue edit 42 --add-label "priority:high" # 라벨 추가
# --- Projects ---
gh project list # 프로젝트 목록
gh project view PROJECT_NUMBER # 프로젝트 상세
gh project item-list PROJECT_NUMBER # 프로젝트 아이템 목록
gh project item-add PROJECT_NUMBER \
--owner OWNER \
--url ISSUE_URL # 이슈를 프로젝트에 추가
# --- Milestones ---
gh api repos/owner/repo/milestones # 마일스톤 목록