안녕하세요. 저는 오픈소스 컨설팅 Custom-dev팀에서 커스텀 개발을 하고 있는 김대현 프로입니다.
오늘 다룰 내용은 Jira 커스텀 개발을 하다보면 필수적으로 사용되는 App 인 ScriptRunner 로컬 개발 환경 구축 방법에 대해서 알아보려고 합니다. 저는 Mac OS, IntelliJ IDEA 기준으로 예제를 작성했으니 참고하시기 바랍니다.


들어가기 전에…

ScriptRunner는 Jira를 좀 더 효율적으로 사용하기 위해서 자동화 및 커스터마이징 지원하는 App인데요 Groovy Scripts를 활용하여 Workflows, Issue를 자동화하거나 Jira를 확장하고 UX를 개선할 수 있습니다.

ScriptRunner는 App이다 보니 Jira 사이트에서 작성, 실행이 가능하기 때문에 따로 로컬 개발 환경을 구축할 필요는 없지만 3가지 이유에서 개발 환경을 구축하면 좋은데요 첫 번째로 운영 중인 사이트이거나 개발계가 있는 사이트라 하더라도 데이터를 마음대로 수정, 삭제하기에는 공용으로 사용 중인 데이터이기 때문에 부담스럽습니다. 두 번째로 디버그 모드가 불가능한데요 간단한 프로그램이라면 디버그 모드가 필수사항은 아니지만 프로그램이 복잡해지다 보면 디버그 모드 없이 오류 찾아 내기가 쉽지 않습니다. 마지막으로 Jira 버전을 업데이트하거나 ScriptRunner 버전을 업데이트하기 전에 버전 업그레이드 후 오류사항을 로컬 개발 환경에서 미리 확인해 볼 수 있기 때문에 Jira 개발자라면 꼭 환경을 구축해 놓는 게 좋습니다. (로컬 개발 환경 구축 시 임시license는 없어도 됩니다.)

개발 환경을 구축하기 앞서 Atlassian-SDK, Java SE Development Kit 8 (JDK 8)는 설치되어 있다고 간주하고 진행하도록 하겠습니다. 개발 환경 구축이 안되신 분은 아래 링크를 통해서 설치 후 진행 부탁드립니다.

1. ScriptRunner Jira 로컬 개발 환경 구축

IntelliJ Get from VersionControl 메뉴를 클릭하여 아래 링크로 소스를 다운로드합니다https://bitbucket.org/adaptavistlabs/scriptrunner-samples

Scriptrunner 소스 다운로드

소스가 다운로드 완료되면 설정으로 들어가 Maven Home path를 Atlassian-SDK Maven 폴더로 지정해 줍니다.

Intellij Maven 설정

jira > pom.xml 파일 확인해 보시면 기본적으로 jira 9.4.12 버전으로 설정되어 있고 ScriptRunner 버전은 생략시 8.24.0 버전으로 실행 됩니다.(추후에는 버전업이 될 수 있습니다.)

<properties>
    <!-- Set your JIRA version here -->
    <jira.version>9.4.12</jira.version>
    <!-- Set logging levels for development here -->
    <logging.levels>com.example;DEBUG,com.onresolve;DEBUG</logging.levels>
</properties>

3개의 프로젝트(jira, confluence, bitbucket) 확인하실 수 있고 IntelliJ Terminal 창에서 jira 폴더로 이동 후
atlas-mvn jira:debug 명령어로 Jira 프로젝트를 구동 시켜줍니다.(confluence, bitbucket 구동은 해당 폴더로 이동 후 위 명령어에서 jira부분만 해당 명칭으로 변경해 주시면 됩니다.)

터미널에서 Jira 구동

서버가 정상적으로 구동되면 아래와 같은 로그를 확인하실 수 있고 해당 URL로 접근하면 됩니다.

서버 정상 구동

계정: admin 패스워드: admin 로그인 > 설정 > ScriptRunner > Console > File 탭
ScratchScript.groovy 파일을 선택 후 Run 버튼을 누르면 해당 파일이 실행되고 Result 탭에서 결과를 확인 가능합니다.

Scriptrunner 스크립트 실행

2. 환경 설정

회사마다 Jira, ScriptRunner 사용 버전이 다르고 환경에 맞는 버전을 설정해 주시고 개발을 하셔야 실제로 스크립트를 반영했을 때 오류가 발생하지 않기 때문에 버전을 변경해야 하는데요 Jira 폴더 밑에 pom.xml 파일에서 아래 처럼 Jira 버전은 8.20.0버전으로 ScriptRunner는 7.13.0으로 설정 가능합니다. (confluence, bitbucket 각각 pom.xml 파일이 존재합니다.)

<properties>
    <!-- Set your JIRA version here -->
    <jira.version>8.20.0</jira.version>

    <scriptrunner.version>7.13.0</scriptrunner.version>

    <!-- Set logging levels for development here -->
    <logging.levels>com.example;DEBUG,com.onresolve;DEBUG</logging.levels>

</properties>

ScriptRunner에서는 기본적으로 8080포트를 사용중인데요 포트가 충돌날경우 변경해주시면 됩니다.

<plugin>
    <groupId>com.atlassian.maven.plugins</groupId>
    <artifactId>jira-maven-plugin</artifactId>

    <configuration>
        <!-- Other code here... -->
        <httpPort>2990</httpPort>
        <!-- Other code here... -->
    </configuration>

</plugin>

2990 port로 Server 시작

2990 포트로 서버구동

8.22.0 버전으로 Jira 설정

설정된 버전으로 Jira 구동

7.13.0 버전으로 ScriptRunner 설정

설정된 버전으로 Scriptrunner 구동

ScriptRunner 버전에 따른 Jira 호환성 버전이 존재 하는데요 아래 링크에서 확인하셔서 2가지 제품에 호환성을 확인 부탁드립니다.

https://marketplace.atlassian.com/apps/6820/scriptrunner-for-jira/version-history

7.13.0버전 같은경우 Jira 8.16.0 ~ 9.7.2 버전까지 설정 가능합니다.

ScriptRunner Jira 호환성

3. 디버그 모드 설정

Run > Edit Configurations

Intellij 디버그 설정

Add New Configuration > Remove JVM Debug

Intellij 디버그 추가

별다른 설정없이 Name정도만 변경 해주시면 됩니다.

Intellij 디버그 설정

Logs 탭에서 Log File Location을 scriptrunner-samples/jira/target/jira/home/log/atlassian-jira.log 경로로 지정하고 Apply 버튼으로 생성해 주시면 됩니다.

Intellij 디버그모드에 로그 파일추가

Run > Debug ‘Jira’ 클릭하시면 Console 창에 Connected to the target VM, address: ‘localhost:5005’, transport: ‘socket’ 메시지가 출력되면 정상적으로 디버그 설정이 완료된 것입니다.

Intellij 디버그 모드 접속 성공

테스트를 위해 Hello World 파일을 추가후 Breakpoint를 설정 후 해당 파일을 Run 해보시면 정상적으로 디버그 모드 동작을 확인하실 수 있습니다.

Intellij 디버그 모드 진입

Scriptrunner 스크립트 실행

Jira log도 jira logs탭에서 확인 가능합니다.

디버그 모드에서 로그 파일 출력

마무리

ScriptRunner 로컬 개발 환경 구축을 같이 진행해 보았는데요.
로컬 개발 환경이 구성되어 있으면 개발 퍼포먼스, 스크립트 소스 관리, IDE의 자동완성 기능 활용 등
다양한 장점이 존재하므로 꼭 로컬 개발 환경을 구축해서 개발하시기 바랍니다.

ScriptRunner 활용 관련해서는 저희 테크블로그의 좋은 글이 있어서 아래에 링크 첨부합니다.

감사합니다.

<관련 글 더 읽어보기>
👉JIRA에서 ScriotRunner로 유저 관리하기 #1
👉No.1 Atlassian Add on – ScriptRunner 적용기

참고자료
https://docs.adaptavist.com/sr4js/latest/best-practices/write-code/set-up-a-dev-environment

개발, 디자인 패턴, 아키텍처에 관심이 많은 꿈 꾸는 개발자입니다.

Leave a Reply

Your email address will not be published. Required fields are marked *