ScriptRunner: Custom Field 다루기

스크립트러너에서 Jira 이슈의 커스텀 필드를 다루는 경우가 많습니다.
저는 어떻게 스크립트러너에서 커스텀 필드의 값을 가져오고, 수정하고 있는지 다뤄보겠습니다.

ScriptRunner란? (복습)

기존에 있는 포스트를 보시면 좋을 것 같습니다.
그중에 2번째 포스트에서 설명했던 Script Console에서 실습해보겠습니다.

시스템 테스트 환경

스크립트러너는 jira 버전에 영향을 좀 받아서 환경도 미리 알고 계셔야합니다.
(버전에 따라 내부 함수들이 변경됨에 따라 실제 코드도 조금씩 변경됩니다)

  • Jira: Jira Software 8.3.2
  • ScriptRunner: 5.6.1.1-jira8

커스텀 필드(Custom Field) 값 가져오기

간단하게 커스텀 필드 값을 가져오는 코드를 보면서 설명하겠습니다.
코드는 groovy로 작성하며 Script Console에서 테스트해보았습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// import
import com.atlassian.jira.component.ComponentAccessor;
import com.atlassian.jira.issue.MutableIssue;

// functions
String getCustomFieldValue(MutableIssue issue, String cfName) {
def customFieldManager = ComponentAccessor.getCustomFieldManager();
def cfObj = customFieldManager.getCustomFieldObjectsByName(cfName)[0];
String cfValue = issue.getCustomFieldValue(cfObj);
return cfValue;
}

def issueMgr = ComponentAccessor.getIssueManager();
MutableIssue issue = issueMgr.getIssueObject("PUBGTEST-169");
getCustomFieldValue(issue, "Translation");

복사 & 붙여넣기 하시고 이슈 키, 커스텀 필드 이름만 바꿔서 입력해주시면
해당 이슈의 커스텀 필드 값을 가져올 수 있는 코드입니다.
코드에서 중요한 부분만 간단하게 보고 커스텀 필드 값 수정으로 넘어가겠습니다.

getCustomFieldValue(issue, cfName) 함수

이슈 오브젝트커스텀 필드 이름을 받아 커스텀 필드 값을 반환하는 함수입니다.

  1. CustomFieldManager를 사용하여 커스텀 필드 오브젝트를 가져옵니다.
  • 배열로 가져오는 함수(getCustomFieldObjectsByName())를 사용하였습니다.
  • getCustomFieldObjectByName()도 있지만 배열로 가져오는 함수를 권장하고 있습니다.
  • 같은 이름의 커스텀 필드가 있을 수 있기에 배열로 가져오는 함수를 권장하는 것 같네요.
  1. issue에 있는 함수 getCustomFieldValue()로 커스텀 필드 오브젝트를 이용해 커스텀 필드 값을 가져옵니다.
  2. 커스텀 필드 값을 리턴합니다.

코드 실행 결과

Script Console 실행 결과도 보여드리겠습니다.

콘솔에서는 코드 실행 후 마지막에 있는 오브젝트의 값을 보여줍니다.
log에서 출력한 내용은 logs 탭에서 볼 수 있습니다.

커스텀 필드(Custom Field) 값 수정하기

커스텀 필드의 값을 확인했으니 수정도 해볼 수 있어야겠죠?!
값을 가져오는 것보다 코드가 조금 더 추가됩니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// import
import com.atlassian.jira.event.type.EventDispatchOption
import com.atlassian.jira.component.ComponentAccessor;
import com.atlassian.jira.issue.MutableIssue;

// functions
String getCustomFieldValue(MutableIssue issue, String cfName) {
def customFieldManager = ComponentAccessor.getCustomFieldManager();
def cfObj = customFieldManager.getCustomFieldObjectsByName(cfName)[0];
String cfValue = issue.getCustomFieldValue(cfObj);
return cfValue;
}
def setCustomFieldValue(MutableIssue issue, String cfName, String str) {
def issueMgr = ComponentAccessor.getIssueManager();
def customFieldManager = ComponentAccessor.getCustomFieldManager();
def user = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser();
def cfObj = customFieldManager.getCustomFieldObjectsByName(cfName)[0];
issue.setCustomFieldValue(cfObj, str);
issueMgr.updateIssue(user, issue, EventDispatchOption.DO_NOT_DISPATCH, false);
}

def issueMgr = ComponentAccessor.getIssueManager();
MutableIssue issue = issueMgr.getIssueObject("PUBGTEST-169");
setCustomFieldValue(issue, "Translation", "TEST");
getCustomFieldValue(issue, "Translation");

앞서 값을 가져오는 코드와 마찬가지로 “TEST”에 있는 값을 바꾸면 적용해보실 수 있습니다.
다만 주의하실 점은 커스텀 필드의 타입이 텍스트 타입이어야합니다.
Label, Checkbox 등 다른 타입일 경우에는 동작하지 않는 코드입니다.

setCustomFieldValue(issue, cfName, str)

값을 가져오는 코드와 다른 부분만 설명드리겠습니다.

  • issueMgr: 이슈 매니저로 이슈 업데이트를 위해 함수 내에 선언합니다.
  • usr: 이슈 업데이트를 하려면 업데이트하는 사용자 오브젝트가 필요하여 선언합니다.
  • issue.setCustomFieldValue(cfObj, str);
    • 이 함수를 통해 커스텀 필드 값이 변경됩니다.
    • 이 코드만 실행할 경우, 실제 반영은 되지 않습니다. (함수 동작시에만 변경됨)
  • issueMgr.updateIssue()
    • 이 함수를 통해 앞에서 setCustomFieldValue()에서 변경된 내용이 반영됩니다.

커스텀 필드 수정과 관련한 질문은 Google에 검색만 하더라도 많이 나옵니다.
(첫번째 글을 보시는 것을 추천합니다.)

코드 실행 결과

실제로 TEST로 변경된 것을 볼 수 있습니다.

마무리

이렇게 스크립트러너로 Jira 이슈의 커스텀 필드를 다뤄보았습니다.
처음에는 어려울 수 있지만 조금씩 다뤄보면 그렇게 어렵지 않습니다.
쉽게 따라하고 적용해보실 수 있는 내용으로 추가 포스트해보겠습니다.

감사합니다. :)

Jira Software 8.4 릴리스 노트

Jira Software 8.4 릴리스 노트

Jira Software 8.4.x 릴리스 노트: https://confluence.atlassian.com/jirasoftware/jira-software-8-4-x-release-notes-975017507.html

2019년 9월에 릴리스된 Jira Software 8.4 기능에 대해 살펴보는 포스트입니다.
위 릴리스 노트에서 자세한 내용을 보실 수 있으며, 이 포스트는 주관적인 생각을 담고 있습니다.

하이라이트 (Highlights)

  • Archived issues taken to the next level (Data Center)
  • Better email notifications, right from the start
  • Filters in Multi User picker Custom field
  • External links open in a new tab
  • Jira becomes more accessible
  • A large number of versions is OK for boards
  • Time tracking in bulk edit
  • Open links in your mobile app
  • Jira Docker
  • New supported databases

이번 8.4 릴리스는 하이라이트 리스트만 봐도 내용이 많긴하네요.
몇가지는 시스템 설정 관련 내용이긴 하지만 한번 보겠습니다.

Better email notifications, right from the start

8.0 버전에 들어갔던 Batch 이메일 알림에 대한 추가 개선 내용했고, 이 내용이 기본 설정으로 변경되었습니다.
기본 템플릿이 있지만 추가적으로 커스텀하게 알림 받고 싶은 것에 대해 설정할 수 있게되었기도 합니다.

다만 시스템 설정 상에서 쉽게 변경할 수는 없고 Velocity template이라는 것을 수정해야한다고 합니다.
나중에 관련해서 세팅하는 방법을 따로 포스트해봐야겠습니다.
(저도 아직 사용해보지 않아서 얼마나 힘들지 모르겠네요.)

Filters in Multi User picker Custom field

릴리스 노트에 있는 내용 그대로 들고와보았습니다. 유저 요청에 따라 추가된 기능이라고 하네요.

In response to user requests, we’ve made it possible to limit the multi user picker custom field to hold only specific set of users.
This is to prevent sending notifications to random users as a result of mistyping user names.
This adds to the overall security of issues.

추가된 기능은 필터에 멀티 유저 피커 커스텀 필드 내용을 추가하여 사용할 수 있는 기능입니다.
필터에 다른 유저를 잘못 입력하는 것을 방지할 수 있는 기능 같네요.

YourUserProfile > Profile > Preferences > External links 메뉴에서
외부 링크를 항상 새로운 탭에서 볼 수 있는 옵션을 제공합니다.

Time tracking in bulk edit


Time tracking 필드의 벌크(bulk) 수정이 가능한 기능이 추가되었습니다.
일괄적으로 추정 시간, 남은 시간을 변경하는 데에 좋을 것 같습니다.

Jira Docker

Jira 서버 버전 및 데이터 센터 버전을 Docker 컨테이너로 사용할 수 있도록 공식 지원한다고 합니다.
자세한 내용은 링크에서 보실 수 있습니다. https://hub.docker.com/u/atlassian
Jira 외에 컨플루언스, 파이프라인 등 다른 이미지들도 있어서 시스템 구성시 사용해볼 수 있을 것 같습니다.

마무리

8.4 릴리스는 8.5 릴리스 전에 많이 개선된 느낌이 있네요.
Docker 이미지가 추가된 것도 좋은 업데이트 사항이었고 향후 있을 8.5 릴리스 내용도 기대가됩니다.

Jira Software 8.3 릴리스 노트

Jira Software 8.3 릴리스 노트

Jira Software 8.3.x 릴리스 노트: https://confluence.atlassian.com/jirasoftware/jira-software-8-3-x-release-notes-972326971.html

2019년 7월에 릴리스된 Jira Software 8.3 기능에 대해 살펴보는 포스트입니다.
위 릴리스 노트에서 자세한 내용을 보실 수 있으며, 이 포스트는 주관적인 생각을 담고 있습니다.

하이라이트 (Highlights)

  • Jira Server mobile app
  • Content Delivery Network (CDN) for Jira Data Center
  • AdoptOpenJDK JRE bundled with JIRA
  • List of custom changes after upgrade
  • New filters to search for custom fields
  • Browsing projects is faster now
  • Improvements to batching emails
  • Cluster lock mechanism improved in Data Center
  • Re-indexing made better

Jira Server mobile app

8.0 버전에서 베타로 있었던 Jira 모바일 앱이 8.3 버전에서 부터 정식 버전으로 오픈되었습니다!
자세한 사항은 따로 페이지가 만들어져 있네요. (링크)

모바일 웹뷰보다는 잘 보이는 것들이 많습니다.
저는 모바일 폰 보다 패드에서는 시원하게 보이는 것들이 많아서 편하게 사용하고 있습니다.
실제로 컴퓨터로 보는게 더 편한 것들이 많은 것은 넘어가겠습니다. :)

New filters to search for custom fields

시스템 설정 > 이슈의 커스텀 필드를 검색하는데에 편의를 위해 필터가 생겼습니다.
이 기능으로 커스텀 필드를 골라서 보는 데에 조금 더 빠르고 편리하게 수정할 수 있게되었습니다.

  • 특정 프로젝트가 사용하는 커스텀 필드
  • 커스텀 필드 타입
  • 특정 스크린이 사용하는 커스텀 필드

Re-indexing made better

커스텀 필드 추가나 이슈 필드 수정이 있으면 항상 따라오는 리인덱싱!
이 내용은 데이터 센터 버전에 해당하는 내용이라고 하네요.
리인덱싱을 진행할 때, 데이터 센터 노드 별로 진행하는 사항 등에 대한 경고로 실수를 막을 수 있도록 했다고 합니다.

마무리

이번 8.3 릴리스는 데이터 센터 업데이트 스펙이 많은 것 같습니다.
서버 버전 사용자 측면에서는 큰 변화는 없으나 시스템 관리자가 편해진 내용도 있었습니다.
큰 스펙으로는 서버 버전의 모바일 앱을 정식으로 지원하게 되었다는 것!

다음 버전에는 어떤 기능들이 추가될지 기대하며 포스트 마치겠습니다.

Jira Software 8.2 릴리스 노트

Jira Software 8.2 릴리스 노트

Jira Software 8.2.x 릴리스 노트: https://confluence.atlassian.com/jirasoftware/jira-software-8-2-x-release-notes-968676271.html

2019년 5월에 릴리스된 Jira Software 8.2 기능에 대해 살펴보는 포스트입니다.
위 릴리스 노트에서 자세한 내용을 보실 수 있으며, 이 포스트는 주관적인 생각을 담고 있습니다.

하이라이트 (Highlights)

  • Filters on the Export archived issues page
  • Color updates for issue statuses
  • Support for Java 11
  • Support for Microsoft SQL Server 2017
  • Updating apps has never been easier
  • Exporting all the issues you need

하이라이트 내용에서는 Jira 서비스를 사용하는 사람 입장에서 주요한 기능들만 강조해보았습니다.
(그 외의 내용은 시스템 관리자가 봐야할 내용이라서 건너뛰겠습니다. :))

Filters to limit the number of archived issues you export

데이터 센터 버전에서 사용할 수 있는 기능입니다.
익스포트하려는 아카이브된 이슈의 수를 제한할 수 있는 기능입니다.
(저는 서버 설치 버전을 사용하고 있어 해당 기능이 정확히 어떤 기능을 하는지 모르겠습니다.)
자세한 내용은 아카이빙 이슈에서 참고해주세요.

Color updates for issue statuses

간단하게 설명하면 이슈들의 상태 카테고리 색깔이 변경되었습니다.
서버 버전과 클라우드 버전의 일관성을 맞추기 위해서 바꾸었다고 하네요.
전, 후

노란색은 사라지고 파란색이 더 강조된 느낌입니다.

Exporting all the issues you need

기존에는 1000개까지 밖에 안되었던 이슈 익스포트가 최적화를 통해 더 많은 양을 익스포트할 수 있게되었습니다.
다만 이 제한 설정은 시스템 관리자가 설정할 수 있습니다.
System > Advanced Settings > jira.search.views.max.limit

마무리

8.2 릴리스는 변경사항이 그렇게 많지 않네요.
그 외에 버그 수정사항도 약간 있으니 자세한 내용인 실제 릴리스 노트 링크를 참고해보세요!

Jira Software 8.1 릴리스 노트

Jira Software 8.1 릴리스 노트

Jira Software 8.1.x 릴리스 노트: https://confluence.atlassian.com/jirasoftware/jira-software-8-1-x-release-notes-966669112.html

지난 4월에 릴리스된 Jira Software 8.1 기능에 대해 살펴보는 포스트입니다.
위 릴리스 노트에서 자세한 내용을 보실 수 있으며, 이 포스트는 주관적인 생각을 담고 있습니다.

하이라이트

하이라이트 기능으로는 아래 리스트와 같습니다. 하나하나 살펴보겠습니다!

  • Issue archiving (Jira Data Center)
  • Managing old components
  • Development info on issue cards
  • Flexible boards
  • More performance improvements
  • Jira Data Center on Microsoft Azure
  • New JMX metrics
  • Small improvements to make your day
  • Resolved issues

Issue archiving (Jira Data Center)

Issue archiving

위 이미지 처럼 이슈를 아카이브 할 수 있는 기능입니다. 다만 Data center만 가능한 기능입니다.
자세한 내용은 아래 링크를 참고하세요.
https://confluence.atlassian.com/adminjiraserver/archiving-an-issue-968669980.html

Managing old components

Managing old components

기존에는 컴포넌트를 삭제하는 방식으로 컴포넌트를 관리할 수 있었는데 한가지 추가 옵션이 생겼습니다.
아카이브하여 해당 컴포넌트는 아카이브되었다는 것을 보여줄 수 있게 되었네요.
입력된 컴포넌트가 아카이브될 경우, 선택 옵션에서는 선택할 수 없으나 이미 입력된 것은 유지됩니다.

Development info on issue cards

이제 칸반, 스프린트 보드에서 이슈 카드에서 커밋되었거나 브랜치가 생성된 내역을 볼 수 있습니다.
이 기능은 커밋 내역을 트래킹하여 보여주는 서비스가 연결되어 있을 경우 볼 수 있겠군요.
(예: Fisheye, Crucible, Bitbucket)

이미지 상으로는 커밋 내역과 브랜치, 리뷰가 완료되었는지 진행 중인지 알 수 있겠네요.
배포 관련 내용은 bitbucket과 관련 내용인지 봐야할 것 같기는 합니다.
(정확한 것은 모르겠지만 아틀라시안 제품과 연동이 잘 되어 있을 것으로 예상합니다)

Flexible boards

보드에서 오른쪽에 이슈 카드의 디테일 내용을 볼 때 가로의 크기가 정해져 있어 보기 힘들었던 것을
옆으로 늘려서 볼 수 있도록 개선한 내용입니다. (QoL 내용 같네요. ㅎㅎ)

More performance improvements

항상 열심히 성능 개선에 힘쓰고 있는 아틀라시안!
이번에도 성능 개선 소식이 있네요.

보드 피커 개선

보드 페이지를 열 때 마다 모든 보드 리스트를 가져왔는데 그렇게 하지 않도록 개선했다고 합니다.
보드를 고를 때는 차이가 나지 않지만, 다른 페이지에서는 성능 상 효과가 있을 것이라고 하네요. :)

이슈 카드 색깔 설정 속도 개선

보드에서 JQL에 따라 카드에 색깔을 넣을 수 있는 기능을 개선했다는 내용입니다.
내부 로직을 개선한 내용으로 색깔을 입히는데에 더 효율적으로 계산한다고 하네요.

Jira Data Center on Microsoft Azure

Jira Data Center 버전-MS Azure 배포 템플릿을 개선했다고 합니다.
(사실 데이터 센터 버전을 사용하지 않아서 잘 모르겠지만 8.1 버전 외에 다 적용되는 사항이라고 합니다.)

New JMX metrics

Jira 성능을 보기 위해서 JMX라는 매트릭스를 도입했다고 합니다.
자세한 것은 이 링크(Live monitoring using the JMX interface)에 있네요.
다만 이 기능은 모니티링도 성능에 영향을 줄 수 있으니 1초에 한번정도만 새로고침하라고 경고하네요. :)
기능을 켜면 Administration > System > System info 밑에 Instrumentation이라는 메뉴가 나타납니다.

Instrumentation: 많은 성능 관련 내용을 볼 수 있습니다.

Small improvements to make your day

작은 개선 사항이지만 우리에게는 꿀맛같은 개선사항입니다.
(이번에는 그렇게 많지는 않군요.)

Sorting projects by columns

이미지 처럼 각 컬럼 별로 여러 프로젝트를 소팅해서 볼 수 있습니다.
프로젝트가 많지 않으면 와닿지 않겠지만 프로젝트가 많을 경우에는 좋을 것 같네요!

Additional custom fields in batched email notifications

특정 커스텀 필드를 이메일 알림에 포함하는 것을 조정할 수 있는 기능이 추가되었다고 합니다.
기능은 심플한데 설정하기에는 까다로운 것 같네요. 참고 링크
나중에 한번 해보고 정리해서 따로 포스트 작성해보겠습니다.

그 외에는 계정 로그인, 로그아웃 시간을 볼 수 있는 기능과 아바타 이미지가 추가된 것이 있네요.
버그 수정 사항은 따로 다루지 않겠습니다.

마무리

8.0에도 변경사항이 많았는데 8.1도 변경 사항이 많았네요.
글을 작성하면서 QoL이 되었으면 하는 것 중 프로젝트 별 이슈 필드 리스트 개선이 언젠가는 생기겠지하는 생각을 했네요.
잡생각을 마무리하며, 포스트 마치겠습니다.