Skip to main content

4 posts tagged with "eclipse"

View All Tags

· 7 min read

Jenkins plugin 중 하나를 수정할 일이 있어서 clone 해서 빌드를 해봤는데 테스트에서 실패하는 문제(테스트 코드 상으로는 전혀 문제가 없어보였는데)가 생겨서 plugin 개발 과정 그대로를 진행해봤다.

OS : OS X Yosemite (10.10.3)

IDE : Eclipse Luna

1. settings.xml 준비

Jenkins plugin은 maven으로 dependency 관리 및 빌드를 하도록 되어있는데 라이브러리나 모듈 등을 maven 중앙 저장소 대신 별도 저장소에서 관리하고 있다. 그렇기 때문에 jenkins 저장소들에 대한 경로를 maven이 인식할 수 있어야 하므로 settings.xml 파일에 아래 내용을 추가하라고 가이드하고 있다.

jenkins-plugin-settings

나의 경우에는 별도로 settings.xml 파일을 변경해서 사용하고 있지 않기 때문에 maven 기본 설정을 따라가게 되어있는데 위의 내용을 ~/.m2/settings.xml 파일로 생성해 놓으니다른 maven project들이 의존관계를 갖는 모듈을 찾지 못하는 문제가 있었다. 그래서 별도로 eclipse에서 workspace를 생성해서 그 위치에 settings.xml 파일을 두고 그 workspace에 있는 project들만 위의 settings.xml 내용을 따르도록 조치해두었다. 불편한 점인데 maven의 기본 settings.xml 내용을 안다면 위의 내용만 추가해서 처리할 수 있을 것 같은데 뒤로 미뤄두기로 했다.

2. Plugin 생성 (skeleton)

Plugin tutorial을 따라서 해보니 아래의 command로 새로운 plugin을 생성해줘야 한다.

mvn -U org.jenkins-ci.tools:maven-hpi-plugin:create

그런데 위의 내용대로 하면 maven에 설정된 settings를 따라가게 되기 때문에 jenkins에 대한 의존관계를 찾지 못해 아래와 같은 오류가 발생한다.

jenkins-plugin-create-error

그래서 별도로 생성한 settings.xml을 적용할 수 있게 command를 변경했다.

mvn -s settings.xml -U org.jenkins-ci.tools:maven-hpi-plugin:create

아래 이미지처럼 groupId와 artifactId를 입력하면 skeleton project가 생성된다.

jenkins-plugin-create

3. mvn install (optional)

튜토리얼에는 hpi로 packaging 하기 위해 아래의 command를 사용하라고 되어있다.

mvn install

단순 packaging인데 goal을 install로 하라는게 이상하다. 어차피 IDE에서 드럼과 장구를 칠테니 이 과정은 없어도 될 듯 하다. 그래도 command 변경해서 한 번 해봤다.

mvn -s ../settings.xml install

전형적인 install 처럼 maven 로컬 저장소 경로에 packaging 된 파일들이 생성된다. packaging 과정을 거쳐서 진행되는거니 /project_path/target 에도 hpi가 생성되고 goal을 package로만 지정해도 target에는 hpi가 생성된다.

jenkins-plugin-install

4. mvn hpi:run

Dependency 중에 jenkins war도 있어서 hpi:run을 goal로 지정하면 플러그인이 설치된 상태로 jetty로 jenkins를 실행시켜준다. 이 때 기본 context path는 /jenkins이고 port는 8080

mvn -s ../settings.xml hpi:run

jenkins-plugin-run

5. Project import

Skeleton project는 기본으로는 maven을 사용하고 있으므로 'Existing Maven Project'로 import 해도 된다. 나의 경우엔 특이한 현상이 있어서 eclipse project로 변환해 보기도 했는데 변환할 경우 아래의 command 형태를 사용하도록 튜토리얼에 기술되어 있다.

mvn -DdownloadSources=true -DdownloadJavadocs=true -DoutputDirectory=target/eclipse-classes -Declipse.workspace=/path/to/workspcae eclipse:eclipse eclipse:add-maven-repo

이제 수정하거나 이것저것 만들어서 빌드하고 실행해볼 수 있다.

6. 특이한 현상

경험했던 특이한 현상이 아래의 두가지였다.

(1) Skeleton project를 run 했을 때 configuration에 나타나지 않는 문제

Skeleton project를 그대로 실행하면 원래는 아래 그림처럼 jenkins configuration에 'Hello World Builder' 라는 section이 추가되고 job 설정에서 프랑스어로 인사를 print 할 수 있는 기능을 build에 넣을 수 있게 되어있는데 어느 곳에도 project와 관련된 부분이 나타나지 않는 현상이 있었다.

jenkins-plugin-section

(2) Clone한 project build시 test에서 실패하는 문제

수정하려고 했던 plugin을 clone해서 packaging을 했는데 테스트에서 실패하는 문제가 있었다. 아래 그림처럼 단순한 형태의 테스트 코드였는데 객체가 얻어지지 않는게 테스트 실패의 원인이었다.

jenkins-plugin-test

두 가지 문제를 해결하려고 시도하던 중 eclipse project로 변환하면서 문제들이 저절로 해결되었다. source를 download 하라고 설정되어 있어서 source가 꼭 필요한 무언가가 있어서 해결된 것인가 (그래도 이상하다) 아니면 변환 과정에서 의존성을 가진 일부 모듈을 download 하는 건지 추측을 해봤지만 정확하지는 않다. 아래는 같은 현상을 경험했던 분이 stackoverflow에 올려놓은 글.

http://stackoverflow.com/questions/23002818/jenkins-plugin-shows-on-plugin-page-but-does-not-show-on-configuration-page

· 3 min read

Eclipse plugin 중에 node.js를 위한 nodeclipse를 사용하고 있다.

초기에는 다른 경로를 사용하다가 언젠가부터 update site가 아래 경로로 바뀌었는데

New update site : nodeclipse.org 참조

http://dl.bintray.com/nodeclipse/nodeclipse/0.7.0/

좀 더 좋아지긴 했다. (Windows 용만 봤을 때에는)

가장 큰 개선점이라고 한다면 windows에서의 "express project 생성 가능" 이라고 개인적으로 생각한다.

(Coffee script 지원 등은 어차피 내가 아직은 사용하지 않는 기능)

제대로 설치가 안되서 애를 먹었는데 아래와 같은 일을 겪고 진행해서 해결했다.

 

1. node.js core / 기타 plugin 설치 불가

Helios를 사용중이었는데 update site가 변경되기 전에는 잘 썼던건데 update site 변경해서 새로 설치해보니

포함된 일부 플러그인이 설치가 안되는 걸 발견했다.

나머지는 대충 넘어갈 수 있는데 core가 설치가 안되서 어쩔 수 없이 해결하고 넘어가야 했다.

공식페이지에 설치 조건 등에 언급이 되어있었으면 좋았는데 알아보니 Eclipse Indigo 이상 가능하다.

http://stackoverflow.com/questions/17418747/nodeclipse-org-eclipse-wst-jsdt-core-not-found-when-installing-into-eclipse

최신인 Luna 설치한 후 plugin을 제대로 설치했다. (내 신발도 luna eclipse 인데...뭔가 잘 풀리려나)

 

2. Terminated, terminated, terminated, ...

설치 후 기존 project들 실행했는데 실행하자마자 로그도 없이 곧바로 terminated 되는 현상이 있었다.

알아보니 JDK 문제인 듯 싶었다. (왜 jdk version을 타는지 알 수 없다. 이해가 안된다)

http://stackoverflow.com/questions/19689501/togglebreakpointstargetfactory-specified-id-is-already-registered

 

3. JDK7 설치 후 eclipse 실행 불가

이런 일은 version up 하면 가끔 생기는 문제라 어느 정도 익숙하다.

JDK7 설치 후 Eclipse 실행시 아래와 유사한 형태의 팝업이 등장한다.

Could not create the java virtual machine

eclipse.ini에 vm 경로를 명시하고 memory를 너무 과하게 잡지 않으면 실행이 되는 걸 발견할 수 있다.

나의 경우엔

-vm C:\Program Files\Java\jdk1.7.0_45\bin\javaw.exe

을 ini에 추가하고 Xmx를 1024m으로 했다가 안되서 512로 변경했더니 정상 실행.

 

4. 행복한 결말

제대로 실행된다. 문제없다. 하지만 이런 종류의 dependency는 사실 좀 귀찮은 문제다.

· 4 min read

Test Framework 개발 프로젝트를 하면서 Agile 방법론과 여러가지 새로운 도구와 Process를 도입하는 중이다.

처음 시도해보는 것들이기도 하지만 잘해두면 우리 내부에서도 좋은 개발환경과 프로세스, 괜찮은 분위기와 조직문화 비슷한 것도 만들어질 것이라고 생각한다. 또 이 부분에 대한 know-how 같은 것도 쌓일테니 나중에 개선이 필요하다고 생각하고 있는 외부조직이나 업체에 assist 하기도 좋을거고.

현재 Test Framework 설계를 진행하면서 대부분의 업무 할당은 JIRA로 진행되고 있다. 그리고 설계 단계에서 나오는 산출물 (설계 문서들)은 Confluence에서 공동작업에 의해 만들어지고 또 읽혀지고 있다.

1차 설계가 종료되고 Prototype을 만드는건 Eclipse를 이용하지만 Source code 관리는 GIT으로 한다. CI를 위해서 Bamboo를 이용하며 현재는 Commit 시점에 항상 빌드하도록 설정되어 있다. 개발자가 Prototype을 만들고 Eclipse에서 빌드를 해보고 commit을 하겠지만, 그렇지 않은 경우가 있을 수 있고 저장소의 나머지 소스들과의 버전 차이로 빌드가 실패할 가능성이 있으니 작은 프로젝트라도 CI는 해봐야 한다고 본다. Eclipse project는 Eclipse 자체를 쓰면 별도의 build script가 굳이 필요없지만 Bamboo와 같은 CI tool에서 빌드 자동화를 하려면 별도의 build script가 필수적인데 예전에 약간 사용해봤던 Ant를 써서 만들어 두었다. 개발자가 소스코드도 개발해야 하고 빌드를 위해 수정이 필요하다면 Ant script까지 손을 봐야겠지만 사용이 어렵지 않고 수정할 부분이 많지 않을테니 큰 거부감은 없을 거라고 생각한다. 이제 Build 성공, 실패 여부를 개발자들이 메일로 받아볼 수 있다.

Code Review를 위해서는 FishEye와 Crucible에 우리의 저장소를 연결해 두었다. 언제 code review를 할 것이냐는 내부적으로 협의가 되어야 하겠지만 언제 어느 시점에 진행하더라도 code review의 문제점은 간단하게 Issue로 등록해서 담당자에게 할당할 수 있다.

이제 sprint1의 절반이 지났다. 다음주면 설계 문서와 spec을 기반으로 Testcase를 작성할 것이고, 테스트 자동화는 CI에 묶여서 역시 결과를 메일로 보내줄 것이다. 이 sprint가 계획대로 잘 끝나고 마지막에 retrospective를 진행하면 뭔가 그럴듯한 산출물이 만들어질 것 같다. 배움과 깨달음도 함께...

· 2 min read

보통 windows 에서는 eclipse 설치 경로 (Eclipse home)에 실행파일과 함께 eclipse.ini 파일이 들어있다. Mac OS X에 eclipse 설치하면 그 eclipse.ini 파일이 보이질 않는데 수정이 필요한 경우에는 아래의 방법을 사용하면 편집이 가능하다.

 

1. Finder로 Eclipse 설치 경로를 연다.

 

2. Eclipse 실행파일을 선택하고 마우스 오른쪽 버튼 (저의 경우)을 눌러 나타나는 메뉴에서 "패키지 내용보기" 클릭

 

3. 새로 열리는 finder 창(Eclipse 실행파일의 내부를 보여줌)에서 Contents/MacOS 경로에 가면 eclipse.ini 파일이 보인다.

 

4. 텍스트 편집기 등의 에디터로 열고 편집.

 

끝.