관련 글
ScriptRunner 소개 #2
- Administration > Add-ons > ScriptRunner
- Script Console
- Built-in Scripts
- Script Listeners
- Script Fields
- REST Endpoints
- Script Fragments
- Escalation Services
- Script JQL Functions
Script Console
- 스크립트를 작성하는 곳 입니다.
- 자동 완성 기능은 없지만 없는 변수나 없는 함수 등은 오류를 보여줍니다.
- 스크립트를 작성한 뒤에 Run 버튼으로 실행할 수 있습니다.
- Result / Logs / Timing 값을 각각 볼 수 있습니다.
- Result: 스크립트에서 나온 결과물을 볼 수 있습니다.
- Logs: 스크립트에서 출력한 log들을 볼 수 있습니다.
- Timing: Elapsed: 208 ms / CPU time: 78 ms 와 같은 내용을 볼 수 있습니다.
정적 타입 체크 밖에 해주지 못하지만 최소한의 체크는 할 수 있기에
스크립트 작성은 할 수 있습니다.
Built-in Scripts
아래 참고 문서에서 사용할 수 있는 스크립트 리스트를 볼 수 있습니다.
참고 문서: https://scriptrunner.adaptavist.com/latest/jira/builtin-scripts.html
위 화면의 스크립트 중 "Bulk Fix Resolutions" 스크립트를 확인해보겠습니다.
이 스크립트는 Filter에 있는 티켓들의 Resolution을 변경할 수 있습니다.
참고 링크: Bulk Fix Resolutions
JQL을 바로 작성하는 것은 아니며 기존에 만들어둔 Filter를 사용하여 동작하는 스크립트 입니다.
그 외에 다른 스크립트의 목록은 아래와 같습니다.
- Escalation Service
- Switch User
- Change dashboard or filter ownership
- Copy Project
- Copy Custom Field Values
- Bulk Import Custom Field Values
- Split Custom Field Context
- Script Registry
- Condition Tester
- Clear JIRA or Groovy Caches
- Bulk Copy SLAs
- List scheduled jobs
- View server log files
Listeners
- 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을 진행할 것인지 설정합니다.
- 주의할 점은 적용하고자하는 프로젝트의 서브 태스크가 어떤 워크플로우를 쓰는가를 확인하여 적용해야 합니다.
이 listener는 앞서 설명드린 create a sub-task 와 프로젝트, 이벤트 필드 설정하는 것은 같지만
이벤트를 받고 처리하는 방식이 다릅니다.
발생한 이벤트에서 각종 데이터를 받아 처리해야하는 listener 타입 입니다.
listener에 필요한 listener 타입이 없다면 커스텀하게 만들어서 사용하면 됩니다.
// Listener 중 Remote Custom listener는 JIRA에 등록되어있는 application에도 scriptRunner를 설치해야 사용할 수 있습니다.
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.
"Add New Item" 버튼을 누르면 아래와 같은 항목들을 볼 수 있습니다.
Listeners 보다는 예시로 사용할 내용이나 항목이 적지만 커스텀하게 만들 수 있는 항목이 있습니다.
Custom Script Field를 보기 전에 다른 것 부터 보겠습니다.
Issue(s) picker 항목을 눌러 필드를 어떻게 생성하는지 보겠습니다.
참고 링크: https://scriptrunner.adaptavist.com/5.5.0/jira/script-fields/issue-picker.html
Issue(s) picker 스크립트 필드는 다른 이슈를 선택할 수 있는 필드 입니다.
옵션으로는 JQL 쿼리로 다른 이슈 선택을 제약(constrained) 할 수 있습니다.
예를 들어, issuetype = Bug 이런 식으로 말이죠. 이렇게 JQL 필드에 넣어두면 버그 타입 issue만 picker에 보이게 될 것 입니다.
Custom Script Field도 한번 보겠습니다.
Custom Script Field 생성 화면에서는 필드 이름, 필드 설명, Note (스크립트 필드 설명)는 앞서 보여드린 Issue picker에도 있지만, Template 필드 값을 통해 필드 타입을 설정할 수 있습니다.
아래는 템플릿에 있는 필드 타입 리스트 입니다.
Custom Script Field에서 Custom이 또 있는데 보여주는 형식도 커스텀하게 설정할 수 있습니다.
(커스텀 필드가 보여주는 값을 커스텀하게 보여주는 것으로 보면 되겠습니다.(?))
아래와 같이 예시로 작성해보면 첫번째 값만 보여지도록 할 수 있습니다.
inline script에 있는 값으로 보여지게 되는 것인데 자세한 내용은 아래 링크를 참고해주세요.
https://scriptrunner.adaptavist.com/5.5.0/jira/scripted-fields.html#_custom_templates
이번 포스트도 많이 길어졌네요.
다음 포스트에서는 REST Endpoints 부터 다루겠습니다.
궁금하신 내용이 있다면 댓글로 문의해주세요. :)