ScriptRunner 소개 2

ScriptRunner 소개 #2

지난 글에서는 Behaviours를 보았고 다음 내용인 콘솔, 리스너 등을 보겠습니다.

  • Administration > Add-ons > ScriptRunner
    • Script Console
    • Built-in Scripts
    • Script Listeners
    • Script Fields
    • REST Endpoints
    • Script Fragments
    • Escalation Services
    • Script JQL Functions

Script Console

Script Console은 실시간으로 스크립트를 작성하고 결과를 볼 수 있는 곳 입니다.

img

실제로 스크립트를 작성해보고 실행해본 모습입니다.

img

  1. 스크립트를 작성하는 곳 입니다.
  • 자동 완성 기능은 없지만 없는 변수나 없는 함수 등은 오류를 보여줍니다.
  1. 스크립트를 작성한 뒤에 Run 버튼으로 실행할 수 있습니다.
  2. Result / Logs / Timing 값을 각각 볼 수 있습니다.
  • Result: 스크립트에서 나온 결과물을 볼 수 있습니다.
  • Logs: 스크립트에서 출력한 log들을 볼 수 있습니다.
  • Timing: Elapsed: 208 ms / CPU time: 78 ms 와 같은 내용을 볼 수 있습니다.

아래는 의도적으로 함수명을 다르게 입력하면 볼 수 있는 에러 화면 입니다.

img

정적 타입 체크 밖에 해주지 못하지만 최소한의 체크는 할 수 있기에
스크립트 작성은 할 수 있습니다.

Built-in Scripts

ScriptRunner 에 이미 설정(구현)되어 있는 스크립트들을 사용할 수 있는 메뉴입니다.
아래 참고 문서에서 사용할 수 있는 스크립트 리스트를 볼 수 있습니다.
참고 문서: https://scriptrunner.adaptavist.com/latest/jira/builtin-scripts.html

img

<아래에 더 많은 스크립트가 있습니다>

위 화면의 스크립트 중 “Bulk Fix Resolutions” 스크립트를 확인해보겠습니다.
이 스크립트는 Filter에 있는 티켓들의 Resolution을 변경할 수 있습니다.
참고 링크: Bulk Fix Resolutions

img

JQL을 바로 작성하는 것은 아니며 기존에 만들어둔 Filter를 사용하여 동작하는 스크립트 입니다.
그 외에 다른 스크립트의 목록은 아래와 같습니다.

Listeners

Listeners는 JIRA에서 일어나는 이벤트에 따라 스크립트를 동작하게 합니다.
프로젝트, 특정 이슈, 특정 이벤트에 따라 동작할 수 있도록 설정할 수 있습니다.
참고 문서: https://scriptrunner.adaptavist.com/latest/jira/listeners.html

img

<여러가지 리스너를 추가할 수 있습니다>

이미 있는 리스너 타입을 사용해도 되고
아예 이벤트를 받는 처음부터 스크립트 마무리까지 관리하는 Custom listener를 사용할 수도 있습니다.

이미 있는 리스너 타입 하나를 한번 보겠습니다.
https://scriptrunner.adaptavist.com/5.4.39/jira/builtin-scripts.html
Create a sub-task: Create a sub-task, Will Optionally reopen a matching sub-task

img

<특정 이벤트에서 sub-task를 만들 수 있는 리스너 입니다>

Create a sub-task Listener를 등록하는 화면의 각각 입력 필드에 대해 알아보겠습니다.

  • Note: Listener 등록시 해당 설명으로 Listener 리스트에서 설명을 볼 수 있습니다.
  • Project(s): 해당 이벤트가 발생하는 프로젝트를 설정합니다.
    • 프로젝트는 자동 완성되어 입력할 수 있습니다.
  • Events: 어떤 이벤트를 받아서 처리할 것인지 이벤트를 설정합니다.
    • All Issue Events, Issue Created, Issue Updated 등의 이벤트를 추가할 수 있습니다.
  • Condition: 해당 이벤트가 발생했을 경우, True / False를 판단할 스크립트를 설정합니다.
    • Show examples를 누르면 예시 코드를 볼 수 있습니다.
    • Priority changed to Major (Listeners only) - Listeners 에서만 동작하는 코드로 priority가 Major로 변경되었을 경우 True를 반환하는 스크립트 입니다.
    • 그 외에 많은 예제 스크립트가 있으니 참고하여 작성하면 됩니다.
  • Target Issue Type: Sub-task 카테고리의 이슈 타입을 설정합니다.
  • Subtask Summary: 생성할 Sub-task 제목(Summary)를 설정합니다.
  • Fields to copy: All / None / Custom 으로 상위 태스크의 필드 값을 복사할 것인지 설정합니다.
  • As User: 어떤 유저로 티켓 생성을 할 것인지 설정합니다.
    • 값이 없을 경우 현재 유저로 설정합니다.
  • Additional issue action: Sub-task 생성 이후 타겟 이슈(부모 이슈)에 대해 추가적인 작업을 하도록 설정합니다.
    • Condition과는 달리 추가적인 작업을 할 수 있도록 하는 스크립트 입력 필드입니다.
    • 제목을 바꾸거나 팝업 메세지를 따로 띄우거나 할 수 있습니다.
    • Show examples를 누르면 예시 코드를 볼 수 있습니다.
  • Subtask Action: 이미 생성된 Subtask가 있을 경우 transition을 진행할 것인지 설정합니다.
    • 주의할 점은 적용하고자하는 프로젝트의 서브 태스크가 어떤 워크플로우를 쓰는가를 확인하여 적용해야 합니다.

Create a sub-task 외에 다른 listener 타입이 있으며 아예 커스텀한 listener도 만들 수 있습니다.
Custom listener의 경우 다음과 같이 만들 수 있습니다.

img

이 listener는 앞서 설명드린 create a sub-task 와 프로젝트, 이벤트 필드 설정하는 것은 같지만
이벤트를 받고 처리하는 방식이 다릅니다.

발생한 이벤트에서 각종 데이터를 받아 처리해야하는 listener 타입 입니다.
listener에 필요한 listener 타입이 없다면 커스텀하게 만들어서 사용하면 됩니다.

// Listener 중 Remote Custom listener는 JIRA에 등록되어있는 application에도 scriptRunner를 설치해야 사용할 수 있습니다.

Script Fields

Script fields는 아래와 같이 설명이 나와있습니다.

A script field is a custom field that allows you to automatically display a value according to the results of a ScriptRunner script.

요약하자면, “스크립트러너의 스크립트 결과를 보여주는 Custom field“ 입니다.
참고 문서: https://scriptrunner.adaptavist.com/latest/jira/scripted-fields.html

img

다음 글에서는 남은 기능을 소개해보겠습니다.

  • REST Endpoints
  • Script Fragments
  • Escalation Services
  • Script JQL Functions