안녕하세요. 저는 오픈소스 컨설팅 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
소스가 다운로드 완료되면 설정으로 들어가 Maven Home path를 Atlassian-SDK 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부분만 해당 명칭으로 변경해 주시면 됩니다.)
서버가 정상적으로 구동되면 아래와 같은 로그를 확인하실 수 있고 해당 URL로 접근하면 됩니다.
계정: admin 패스워드: admin 로그인 > 설정 > ScriptRunner > Console > File 탭
ScratchScript.groovy 파일을 선택 후 Run 버튼을 누르면 해당 파일이 실행되고 Result 탭에서 결과를 확인 가능합니다.
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 시작
8.22.0 버전으로 Jira 설정
7.13.0 버전으로 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 버전까지 설정 가능합니다.
3. 디버그 모드 설정
Run > Edit Configurations
Add New Configuration > Remove JVM Debug
별다른 설정없이 Name정도만 변경 해주시면 됩니다.
Logs 탭에서 Log File Location을 scriptrunner-samples/jira/target/jira/home/log/atlassian-jira.log 경로로 지정하고 Apply 버튼으로 생성해 주시면 됩니다.
Run > Debug ‘Jira’ 클릭하시면 Console 창에 Connected to the target VM, address: ‘localhost:5005’, transport: ‘socket’ 메시지가 출력되면 정상적으로 디버그 설정이 완료된 것입니다.
테스트를 위해 Hello World 파일을 추가후 Breakpoint를 설정 후 해당 파일을 Run 해보시면 정상적으로 디버그 모드 동작을 확인하실 수 있습니다.
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
개발, 디자인 패턴, 아키텍처에 관심이 많은 꿈 꾸는 개발자입니다.
Search
Recent Post
Atlassian Rovo 정식 출시 – 새로운 팀원을
- 2024년 11월 13일
- 1 min read
[Team ’24 Europe] 다음 시대의 Teamwork은?
- 2024년 10월 29일
- 2 min read
Jira, Confluence Cloud Rest API 제대로 사용하기
- 2024년 10월 24일
- 5 min read
VMware 시장 변화에 대응할 방법은? 정답은 여기에!
- 2024년 09월 30일
- 1 min read
dangerouslySetInnerHTML을 아시나요? – 프론트엔드에서의 XSS (교차 스크립트
- 2024년 09월 27일
- 2 min read
Comments
Archives
- November 2024
- October 2024
- September 2024
- August 2024
- July 2024
- June 2024
- May 2024
- April 2024
- March 2024
- February 2024
- January 2024
- December 2023
- November 2023
- October 2023
- September 2023
- August 2023
- July 2023
- June 2023
- May 2023
- April 2023
- March 2023
- February 2023
- January 2023
- December 2022
- November 2022
- October 2022
- September 2022
- August 2022
- July 2022
- June 2022
- May 2022
- April 2022
- March 2022
- February 2022
- January 2022
- December 2021
- November 2021
- October 2021
- September 2021
- August 2021
- July 2021
- May 2021
- March 2021
- February 2021
- January 2021
- November 2020
- October 2020
- September 2020
- August 2020
- May 2020
- April 2020
- March 2020
- February 2020
- January 2020
- December 2019
- November 2019
- October 2019
- September 2019
- August 2019
- July 2019
- June 2019
- May 2019
- April 2019
- February 2019
- January 2019
- December 2018
- November 2018
- September 2018
- August 2018
- July 2018
- February 2017
- January 2017
- November 2014
- March 2014