1회차실습 6140–180분웹 화면 위주

스프린트와 보기

“Sprint 1은 10월 12일부터 23일까지”라는 정보를 이슈 본문에 적으면, 업무를 Sprint 2로 옮길 때마다 본문을 고쳐야 하고 고치지 않은 본문이 남는다. Project의 반복(Iteration) 필드는 기간을 필드의 선택지로 한 번만 정의하고, 업무는 그 선택지 하나를 가리킨다. 이 실습은 웹 화면에서 Iteration 필드를 만들어 업무를 배정하고, 같은 업무를 백로그 표, 스프린트 보드, 로드맵 세 가지 보기로 구성한다.

진행
시연 10분, 실습 20분, 1회차 점검 10분
결과
Iteration 필드, Status 4단계, 보기 3개
명령
웹 화면, gh project item-list --query --field

1왜 이 단계는 웹에서 하는가

gh project field-create가 만들 수 있는 필드 유형은 TEXT, SINGLE_SELECT, DATE, NUMBER이고 Iteration은 없다. 값을 바꾸는 item-edit도 Iteration은 이름으로 지정할 수 없고, --field Iteration --value "Sprint 1"을 실행하면 “setting an iteration field by name is not supported”라는 오류가 난다. 따라서 Iteration의 생성과 배정은 웹 화면에서 한다. 보기(view)의 구성도 웹에서 한다.

source pm-lab/env.sh
gh project view "$PM_PROJECT" --owner "$PM_OWNER" --web

2Iteration 필드 만들기

  1. Project 화면 오른쪽 위의 ⋯ 메뉴에서 Settings를 연다.
  2. 왼쪽 Fields 목록 아래의 + New field를 누른다.
  3. 이름에 Iteration을 입력하고 유형으로 Iteration을 고른다.
  4. 시작일 2026-10-12, 기간 2 weeks로 정하고 저장한다.
  5. 생성된 반복의 이름을 Sprint 1, Sprint 2로 바꾼다. 기본 이름은 “Iteration 1”처럼 붙는다.

기간은 시작일을 포함해 달력 날짜로 센다. 10월 12일(월)부터 2주는 10월 25일(일)까지로 표시된다. 업무일 기준으로는 10월 23일(금)에 끝나므로 화면의 종료일과 계획표의 종료일이 이틀 다르다. Sprint 2는 10월 26일(월)에 시작해 11월 8일(일)까지로 표시되고, 업무일 기준으로는 M1 마감일인 11월 6일(금)에 끝난다.

반복화면 표시업무일 기준
Sprint 110-12 ~ 10-2510-12 ~ 10-23
Sprint 210-26 ~ 11-0810-26 ~ 11-06

3Status에 In Review 추가

  1. Settings의 Fields 목록에서 Status를 연다.
  2. 선택지에 In Review를 추가하고, In Progress와 Done 사이로 끌어 옮긴다.
  3. 선택지가 Todo, In Progress, In Review, Done 순서인지 확인한다.

4업무에 값 배정

Project의 기본 표 화면으로 돌아가 오른쪽 끝 +로 Iteration, Priority, Target date 열을 표시한다. 각 칸을 눌러 아래 값을 입력한다. Priority가 이미 채워져 있으면 그대로 둔다.

키IterationPriorityTarget dateStatus
LP-01Sprint 1P02026-10-14Todo
LP-02Sprint 1P12026-10-21Todo
LP-03Sprint 1P02026-10-23Todo
LP-04Sprint 2P12026-10-30Todo
LP-05Sprint 2P02026-11-04Todo
LP-06Sprint 2P12026-11-06Todo

여러 칸에 같은 값을 넣을 때는 첫 칸을 고른 뒤 아래 칸들로 끌어 채울 수 있다. 같은 이슈에 Iteration(작업 기간), Target date(업무 목표일), 마일스톤(출시 마감)이 모두 붙었다. 세 값은 서로 독립적으로 바뀐다.

5보기 세 개 구성

보기는 같은 항목을 다른 배치와 필터로 보여 주는 탭이다. Project 상단의 + New view로 만들고, 탭 이름을 두 번 눌러 이름을 바꾼다. 필터나 정렬을 바꾸면 탭 옆에 저장 표시가 생기므로 Save를 눌러 저장한다.

보기 이름배치(Layout)설정PM이 확인할 내용
BacklogTable정렬: Priority 오름차순. 필터: label:"kind:task"다음에 할 일, 담당자 누락
Sprint 1Board열: Status. 필터: iteration:"Sprint 1"이번 스프린트의 진행과 막힘
Release roadmapRoadmap날짜 필드(Date fields)의 목표일에 Target date. 표시(Markers)에서 Milestones 선택업무 목표일과 출시 마감의 관계

Roadmap의 Milestones 표시를 켜면 마일스톤 마감일이 세로선으로 나타나, 업무 막대가 출시 마감을 넘는지 볼 수 있다. 현재 날짜 기준으로 운영할 때는 필터에 iteration:@current를 쓸 수 있다. 오늘 날짜가 Sprint 1의 시작일(2026-10-12)보다 앞이면 @current에 해당하는 반복이 없어 보드가 비어 보인다. 수업에서는 이름을 직접 적는다.

6CLI로 같은 보기 확인

웹의 필터 문법은 item-list --query에 그대로 쓸 수 있다. --field는 지정한 필드를 열로 덧붙인다.

gh project item-list "$PM_PROJECT" --owner "$PM_OWNER" --limit 100 \
  --query 'iteration:"Sprint 1"' \
  --field Status --field Priority --field "Target date"
TYPE   TITLE                                               NUMBER  REPOSITORY                ID              STATUS  PRIORITY  TARGET DATE
Issue  [LP-01] 사전신청 정책을 확정한다                    1       gildong/launchpad-pm-lab  PVTI_lAHOA...   Todo    P0        2026-10-14
Issue  [LP-02] 랜딩 페이지에서 서비스 안내와 신청 버튼...  2       gildong/launchpad-pm-lab  PVTI_lAHOA...   Todo    P1        2026-10-21
Issue  [LP-03] 방문자가 이메일로 사전신청을 완료한다       3       gildong/launchpad-pm-lab  PVTI_lAHOA...   Todo    P0        2026-10-23

1회차 점검

1회차가 끝나면 아래 상태가 되어야 한다. 2회차는 이 상태에서 시작한다.

source pm-lab/env.sh
cat pm-lab/env.sh
gh api "repos/$PM_REPO/milestones" --jq '.[] | "\(.title) 열림 \(.open_issues) 닫힘 \(.closed_issues)"'
gh project item-list "$PM_PROJECT" --owner "$PM_OWNER" --limit 100 --field Iteration --field Priority
PM_OWNER="gildong"
PM_REPO_NAME="launchpad-pm-lab"
PM_REPO="gildong/launchpad-pm-lab"
PM_MILESTONE="M1 비공개 베타"
PM_POLICY_URL="https://github.com/gildong/launchpad-pm-lab/issues/1"
PM_PROJECT="3"
M1 비공개 베타 열림 6 닫힘 0
M2 공개 런칭 열림 0 닫힘 0
(Project 항목 6줄, ITERATION 열에 Sprint 1 세 개와 Sprint 2 세 개)
  • Iteration 필드에 Sprint 1(10-12 시작)과 Sprint 2(10-26 시작)가 있다.
  • Status 선택지가 Todo, In Progress, In Review, Done 순서다.
  • 여섯 업무 모두 Iteration, Priority, Target date가 채워져 있다.
  • Backlog, Sprint 1, Release roadmap 보기 세 개가 저장되어 있다.
  • CLI의 --query 'iteration:"Sprint 1"' 결과가 Sprint 1 보드와 같은 세 업무다.
  • pm-lab/env.sh에 여섯 줄이 있다.
막히면
증상확인과 해결
Sprint 1 보드가 비어 있음필터 철자와 따옴표를 확인한다. iteration:"Sprint 1"처럼 공백이 있는 이름은 큰따옴표로 감싼다. @current를 썼다면 오늘 날짜가 Sprint 기간 안인지 확인한다.
field "Iteration" not found in project필드 이름이 다르다. gh project field-list "$PM_PROJECT" --owner "$PM_OWNER"로 실제 이름을 확인한다.
Roadmap에 막대가 없음보기 설정의 날짜 필드(Date fields)에 Target date가 지정되어 있는지 확인한다.
보기를 바꿨는데 다음에 열면 원래대로임탭 옆의 저장 표시를 눌러 Save 하지 않았다.

마치며...

1회차에서 출시 목표 2개, 라벨 7개, 업무 6개, Project 하나와 필드 셋, 스프린트 두 개, 보기 세 개가 만들어졌고, 이후 명령에 쓰는 변수 여섯 개가 pm-lab/env.sh에 저장되었다. 같은 업무가 백로그 표, 스프린트 보드, 로드맵에 동시에 나타나는 구조가 완성되었다. 2회차는 이 구조 위에서 업무의 상태를 바꾸고, 회의 전에 진행 상황을 조회하는 명령부터 시작한다.