JQL(JIRA Query Language) 활용법 #3 실전 사례
- 1 담당자
- 1.1 내가 담당한 이슈
- 1.2 담당 이슈중 미해결 이슈
- 2 업무 이력 조회
- 2.1 내 주간 업무 이력
- 2.2 팀 주간 업무 이력
- 2.3 상태 변경자 다수 지정
- 2.4 그룹원 명시
- 2.5 월간 업무 이력
- 2.6 올해 업무 회고
- 2.7 날자를 고정하기
- 3 기타
JQL 활용 예제입니다. JQL 문법은 🔎 #1 JQL(JIRA Query Language) 로 JIRA Issue(지라 이슈) 검색하기 - 기본 연산자 을 참고하세요.
JIRA Cloud 는 GDPR(General Data Protection Regulation) 때문에 lesstif 같은 사용자 ID 를 직접 지정할 수 없습니다.
jql 입력시 사용자의 정보가 필요할 경우 Atlassian 의 ID 형식을 사용해야 합니다.
담당자
내가 담당한 이슈
project = myproj AND assignee = currentUser() |
담당 이슈중 미해결 이슈
내가 담당인 이슈중에 해결되지 않은 이슈를 마감 기한과 우선 순위로 정렬하는 경우입니다.
assignee = currentUser() and resolution = Unresolved order by due, priority |
업무 이력 조회
내 주간 업무 이력
지난 주에 저에 의해 완료 상태로 변경된 이슈들을 변경일은 오름차순, 우선순위는 내림차순으로 표시하는 JQL입니다.
status changed to Done during (startofweek(-1) , endofweek(-1)) by lesstif order by updated, priority |
Worfklow 에 따라 완료 상태 이름이 Done 이 아닐수 있는데 위 쿼리는 그런 경우 원하는 데이터가 제외되므로 status 가 아닌 resolution 필드를 사용하면 됩니다.
resolution changed to Done during (startofweek(-1) , endofweek(-1)) by lesstif order by updated, priority |
모든 담당 이슈를 한 주안에 다 처리해서 완료 상태로 전환할 수 없을 텐데 위의 JQL 은 진행중 업무는 빠질 우려가 있습니다.
상태를 바꾼 모든 이슈를 표시하려면 to 구문을 제외하고 검색하면 됩니다.
status changed during (startofweek(-1) , endofweek(-1)) by lesstif () order by updated, priority |
상태를 바꾸지 않고 comment 가 추가된 경우 위 JQL 에는 나오지 않습니다.
기본 JQL 로는 특정 기간내에 comment 추가 여부를 확인할 수 없으며 Custom Field 를 만들고 Automation 으로 처리해야 합니다.
팀 주간 업무 이력
JIRA 이슈를 열심히 기록했으면 팀 주간 업무 보고로 JQL 을 바로 활용할 수 있습니다.
팀이므로 상태 변경자를 팀원들을 명시하면 되는데 여럿을 지정할 경우 by 뒤에 괄호로 사용자 id 를 넣어주면 됩니다.
상태 변경자 다수 지정
다음은 지난 주에 지정한 3명이 상태를 변경한 이슈 목록을 나열합니다.
resolution changed to Done during (startofweek(-1) , endofweek(-1)) by (lesstif, qa-leader, sys-auditor) order by updated, priority |
그룹원 명시
팀이 JIRA 그룹으로 묶여 있을 경우 membersOf 함수를 사용할 수 있습니다.
다음은 awesome-project 그룹 멤버가 지난 주에 상태 변경한 이슈를 나열합니다.
resolution changed to Done during (startofweek(-1) , endofweek(-1)) by (membersOf('awesome-project')) order by updated, priority |
by 구문 뒤에 membersOf 함수를 사용할 경우 () 로 둘러싸야 제대로 결과가 나옵니다.
월간 업무 이력
지난 달에 내가 완료 상태로 변경한 이슈들은 주간 업무 보고를 활용하여 startOfMonth, endOfMonth 함수를 사용하면 됩니다.
status changed to "done" during (startOfMonth(-1) , endOfMonth (-1)) by lesstif order by updated, priority |
마찬가지로 상태 변경한 모든 이슈는 to status 를 빼면 됩니다.
status changed during (startOfMonth(-1) , endOfMonth (-1)) by lesstif order by updated, priority |
팀의 월간 업무 이력도 쉽게 파악 가능합니다.
resolution changed to Done during (startOfMonth(-1) , endOfMonth (-1)) by (membersOf('awesome-project')) order by updated, priority |
올해 업무 회고
만약 올해 업무를 회고한다면 month 를 year 로 변경하고 파라미터는 주지 않으면 됩니다.
status changed during (startofyear() , endofyear()) by lesstif order by updated, priority |
지난 해의 업무는 -1 을 파라미터로 주면 확인할 수 있습니다.
status changed during (startofyear(-1) , endofyear(-1)) by lesstif order by updated, priority |
작년에 수행한 업무중 완료 상태로 변경한 이슈를 출력합니다.
status was in ("Resolved", Done, Closed) by lesstif during (startOfYear(-1), endOfYear(-1)) order by updatedDate |
날자를 고정하기
2020-04-06 부터 2020-04-13 까지 주간 업무를 위해서 다음과 같이 주간 업무를 작성했다고 가정해 봅시다.
resolution changed to Done during (startofweek(-1) , endofweek(-1)) by (membersOf('awesome-project')) order by updated, priority |
이 JSQL 은 2020-04-16 에 조회하는 것과 2020-07-15 등 조회하는 날자에 따라서 결과가 달라지는 문제가 있습니다.
이런 문제를 해결하려면 주간이나 월간 업무 공유는 date function 을 사용하지 말고 아래처럼 날자를 고정시키는게 좋습니다.
resolution changed to Done during ('2020-04-06' , '2020-04-13') by (membersOf('awesome-project')) order by updated, priority |
기타
특정 이슈의 하위 이슈(Subtask) 검색
project = myproj AND parent = TEST-1234 |
미해결 이슈를 투표수와 생성일로 정렬
Atlassian 은 주기적으로 투표수를 파악해서 높은 경우 내부 판단 절차를 거쳐서 타당하며 요청이 많은 요구 사항일 경우 스프린트 백로그에 추가합니다.
이렇게 투표 기능을 사용해서 고객의 요구 사항을 수집해서 제품에 반영하는 것은 좋은 방법이며 아래 JQL 로 투표수 높은 이슈를 출력할 수 있습니다.
status not in (Resolved, Closed, done) and votes > 0 order by votes, createdDate |