레이블이 scriptrunner인 게시물을 표시합니다. 모든 게시물 표시
레이블이 scriptrunner인 게시물을 표시합니다. 모든 게시물 표시

2019년 4월 1일 월요일

JIRA Plugin - 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은 실시간으로 스크립트를 작성하고 결과를 볼 수 있는 곳 입니다.

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


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


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

Built-in Scripts

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

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

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


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

Listeners

Listeners는 JIRA에서 일어나는 이벤트에 따라 스크립트를 동작하게 합니다.
프로젝트, 특정 이슈, 특정 이벤트에 따라 동작할 수 있도록 설정할 수 있습니다.

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

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

이미 있는 리스너 타입 하나를 한번 보겠습니다.
Create a sub-task: Create a sub-task, Will Optionally reopen a matching sub-task

<특정 이벤트에서 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의 경우 다음과 같이 만들 수 있습니다.


    이 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" 입니다.

    2019년 3월 25일 월요일

    JIRA Plugin - ScriptRunner 소개 #1

    업무에서 요즘 많이 사용하는 'ScriptRunner' 라는 플러그인을 소개하려 합니다.
    이 포스트에서 다루는 내용은 JIRA 환경을 기준으로 작성되었습니다.
    (한국 문서로는 많이 볼 수 없어서 공부 및 소개 겸 포스트 작성합니다.)

    ScriptRunner란?

    Adaptavist ScriptRunner
    • 메인 페이지: https://scriptrunner.adaptavist.com/latest/index.html
    • Adaptavist 라는 회사에서 만든 스크립트 플러그인
      • Adaptavist inc: https://www.adaptavist.com/
      • ScriptRunner, Test Management, SmartDraw 등 Atlassian 소프트웨어 플러그인 개발사
    • JIRA, Confluence, Bitbucket에서 커스텀 스크립트를 사용할 수 있는 플러그인
    • 플러그인 설치 시 기본적으로 스크립트 함수, 필드 지원
    • 스크립트 언어는 Groovy를 사용

    ScriptRunner 가이드

    가이드 문서는 모두 영어로 되어있으며, JIRA Server, JIRA Cloud로 나눠져있습니다.
    Server 설치 버전과 Cloud 버전이 달라 기능도 약간씩 다르니 그 부분은 참고하여 사용해야합니다.
    ScriptRunner 플러그인을 처음 시작한다면 다음 자료들을 보면 좋습니다.
    Adaptavist에서는 따로 교육과정도 있으니 참고하세요.

    ScriptRunner 스크립트 작성

    ScriptRunner 플러그인으로 스크립트를 작성할 수 있는 곳은 JIRA 기준으로 다음과 같습니다.
    • Administration > Add-ons > Behaviours
    • Administration > Add-ons > ScriptRunner
      • Script Console
      • Built-in Scripts
      • Script Listeners
      • Script Fields
      • REST Endpoints
      • Script Fragments
      • Escalation Services
      • Script JQL Functions
    각 메뉴에서 할 수 있는 일을 정리해보겠습니다.

    Behaviours

    behaviours 기능을 통해 관리자는 하나 이상의 behaviours를 만들 수 있습니다. behaviours는 주어진 프로젝트 또는 이슈에서 이슈에 대한 필드가 동작하는 방식을 정의합니다. 아래는 예시입니다.

    예시:
    • 이슈 화면에 입력된 다른 데이터(즉, 이슈 생성 또는 이슈 전환 중)에 따라 필드를 필수 항목으로 지정.
    • 사용자 역할 또는 그룹에 따라 필드를 읽기 전용으로 설정
    • 이슈 화면(스크린)이 제출되기 전에 필드 데이터를 서버 측이 검증 수행
    • 다른 이슈 화면(스크린) 데이터에 따라 필드 값 설정
    https://scriptrunner.adaptavist.com/5.5.0/jira/behaviours-overview.html#_examples
    링크에서는 예시로 좋은 설명이 1, 2 있습니다.
    1. 이슈 생성 시 기본 Description(설명) 포맷 값 설정
    2. Resolved 처리 시 Resolution이 Fixed 일 경우, Fix Version 입력을 꼭 할 수 있도록 스크린 설정
    3. Live Editing (실시간 코드 작성)

    작성하다보니 내용이 많아졌네요.
    ScriptRunner 소개 #2 포스트에서 다음 내용들을 다루겠습니다.

    JIRA Plugin - ScriptRunner 소개 #2

    관련 글 소개 #1:  https://pineoc.blogspot.com/2019/03/scriptrunner-1.html ScriptRunner 소개 #2 지난 글에서는 Behaviours를 보았고 다음 내용인 콘솔, 리스너 등을 ...