brunch

You can make anything
by writing

C.S.Lewis

by 보이 Aug 20. 2023

Jira Rich filter 생성하는 방법

Jira 필터에 Rich함을 입히자

BTS에서 필터를 만들고 대시보드를 구성하는 작업은 한두 번 해보면 어렵지 않지만, 처음 시작할 때는 막막하다. 이유는 구글링을 해도 유튜브에 검색해도 마땅한 가이드가 없기 때문이다. 즉, 배울 수 없어서 막막하다.


나 역시 책이나 동영상을 통해 배운 것은 아니고, 회사 내부의 BTS admin에게 물어보거나 온갖 메뉴를 다 클릭해 보고 이것저것 만들어보며 배웠다. 이렇게 조금씩 배우고 성장하다 보니 지금은 내가 BTS admin 권한을 받게 되었다. 왕초보 관리자이지만, BTS admin이 된 기념으로 Rich filter를 생성하는 방법을 정리해 보려고 한다.

*일반 Jira 필터 생성하는 방법은 너무 간단해서 생략하는데, 혹시 필요한 분이 계시다면 댓글 남겨주세요.






Rich filter 생성

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로 구성된다. 하나씩 살펴보자.



Static 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 = "스프린트 네임"



Dynamic Filters

- 동적 필터를 사용하면 필드 값으로 문제를 필터링할 수 있다.

- (우리 조직에서 사용하는 BTS는) 동적 필터는 일반 사용자는 생성할 수 없고, BTS admin이 생성해둔 필터를 불러와서 적용할 수만 있다. 그래서 만들고 싶은 동적 필터가 있다면 BTS admin에게 생성을 부탁하면 된다.

- 사실 정적 필터와 동적 필터의 정확한 차이를 모르겠는데, 둘 다 Jira 필터에 한번 더 필터링을 입히는 JQL 쿼리이므로 동적 필터를 생성할 수 있는 권한이 없다면 그냥 정적 필터를 만들어서 사용해도 무방할 것 같다.

*두 필터의 차이점에 대해 아시는 분이 계시다면 댓글 부탁드려요.



Smart Filters

- 스마트 필터를 사용하면 특정 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 만드는 방법에 대해 설명하겠다.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari