Jira 필터에 Rich함을 입히자
BTS에서 필터를 만들고 대시보드를 구성하는 작업은 한두 번 해보면 어렵지 않지만, 처음 시작할 때는 막막하다. 이유는 구글링을 해도 유튜브에 검색해도 마땅한 가이드가 없기 때문이다. 즉, 배울 수 없어서 막막하다.
나 역시 책이나 동영상을 통해 배운 것은 아니고, 회사 내부의 BTS admin에게 물어보거나 온갖 메뉴를 다 클릭해 보고 이것저것 만들어보며 배웠다. 이렇게 조금씩 배우고 성장하다 보니 지금은 내가 BTS admin 권한을 받게 되었다. 왕초보 관리자이지만, BTS admin이 된 기념으로 Rich filter를 생성하는 방법을 정리해 보려고 한다.
*일반 Jira 필터 생성하는 방법은 너무 간단해서 생략하는데, 혹시 필요한 분이 계시다면 댓글 남겨주세요.
1. Issues > Manage rich filters
2. 우측 상단의 Create rich filter
3. Add a rich filter
- Rich filter name: 생성하고자 하는 리치 필터의 이름을 적으면 된다. 심플하고 누구나 알아볼 수 있는 네임이 좋으며, 앞에 대괄호 등을 붙여서 프로젝트를 구분하는 것도 좋다.
예) [23Q3OKR] KR
- Jira filter: 리치 필터로 생성하고자 하는 Jira 필터를 불러오면 된다. 다른 사람이 만든 필터도 공유되어 있다면 불러올 수 있다.
- Jira filter 공유 설정: My Filters > Shared with > Shared with logged-in users (VIEW)
리치 필터는 위와 같이 Static Filters, Dynamic Filters, Smart Filters로 구성된다. 하나씩 살펴보자.
- 정적 필터는 기본 Jira 필터에서 반환된 문제를 추가로 필터링하는 데 사용할 수 있는 추가 JQL 쿼리이다.
- 예를 들어, Jira 필터를 통해 OKR 1번에 해당하는 모든 개발팀의 티켓을 뽑고, Static filter를 추가로 적용해서 이번 스프린트에 포함된 티켓들만 한 번 더 필터링할 수 있다.
- 애초에 Jira 필터의 쿼리를 길게 짜서 두 번의 필터링이 되도록 할 수도 있지만, 하나의 Jira 필터 안에 Static filter를 여러 개 만들어두고 필요에 따라 필터링한다면 보다 효과적인 결과를 도출할 수 있다.
정적 필터도 JQL 쿼리이므로 Jira 필터와 동일하게 생성하면 돼서 큰 어려움은 없을 것이다. 내가 주로 생성하고 사용하는 정적 필터 몇 개를 샘플로 올려본다.
① My Tasks: 내가 assignee된 티켓만 필터링
assignee = currentUser() AND issueFunction in linkedIssuesOfAllRecursiveLimited("assignee = currentUser()", 2)
② My Project: 내가 소속된 프로젝트 팀의 티켓만 필터링
project = "프로젝트 네임" OR issueFunction in epicsOf("project = 프로젝트 네임") OR issueFunction in linkedIssuesOf("issueFunction in epicsOf(\"project = 프로젝트 네임\")", "is included by")
③ Current Sprint: 이번 스프린트에 포함된 티켓만 필터링
project = "프로젝트 네임" AND sprint = "스프린트 네임"
- 동적 필터를 사용하면 필드 값으로 문제를 필터링할 수 있다.
- (우리 조직에서 사용하는 BTS는) 동적 필터는 일반 사용자는 생성할 수 없고, BTS admin이 생성해둔 필터를 불러와서 적용할 수만 있다. 그래서 만들고 싶은 동적 필터가 있다면 BTS admin에게 생성을 부탁하면 된다.
- 사실 정적 필터와 동적 필터의 정확한 차이를 모르겠는데, 둘 다 Jira 필터에 한번 더 필터링을 입히는 JQL 쿼리이므로 동적 필터를 생성할 수 있는 권한이 없다면 그냥 정적 필터를 만들어서 사용해도 무방할 것 같다.
*두 필터의 차이점에 대해 아시는 분이 계시다면 댓글 부탁드려요.
- 스마트 필터를 사용하면 특정 JQL 쿼리와 일치하는 경우 색상 및 레이블로 문제를 필터링하고 태그를 지정할 수 있다.
- 보통 Status나 Objective를 구분할 때 사용하고 있다. 내가 주로 생성하고 사용하는 스마트 필터 몇 개를 샘플로 올려본다.
① Status
■ Open: status = "Open" OR status = "Re Open"
■ To Do: status = "To Do"
■ In Progress: status = "In Progress"
■ Review: status = "In Review" OR status = "Review" OR status = "Ready to Review" OR status = "Ready"
■ Done: status = "Done" OR status = "Resolved" OR status = "Closed" OR Status = "Completed"
② Objective
■ KR1: filter = "KR1 지라 필터" OR issueFunction in linkedIssuesOfAll("filter=KR1 지라 필터")
■ KR2: filter = "KR2 지라 필터" OR issueFunction in linkedIssuesOfAll("filter=KR2 지라 필터")
■ KR3: filter = "KR3 지라 필터" OR issueFunction in linkedIssuesOfAll("filter=KR3 지라 필터")
이렇게 글로만 봐서는 이해가 안 될 수 있으니 반드시 직접 만들어봐야 한다. 막상 만들면 전혀 어렵지 않고 눈에 보이는 결과물에 흥미가 생길 것이다.
리치 필터를 생성하고, 리치 필터 전용 가젯을 추가하면 상기와 같이 보다 풍성한 Dashboard를 구성할 수 있다.
사실 나는 이전 직장에서 Jira 및 BTS를 사용해 본 적이 없고, 작년 12월에 현 직장으로 이직하며 BTS를 처음 접한 것이어서 아직 왕초보이고 배워야 할 기능들이 많다. 그렇지만 배운 것들을 한 번 더 글로 정리한다는 생각으로 내가 아는 선에서 최대한 자세히 브런치를 작성하려고 노력 중이다. 그러니 전문성이 조금 부족하더라도 "열심히 하고 있군" 하는 마음으로 읽어주시길 :)
다음엔 Rich filter 전용 가젯을 이용하여 프로젝트 관리용 Dashboard 만드는 방법에 대해 설명하겠다.