외부 Jenkins와 내부 네트워크 상의 GUITAR 테스트 환경 연동 2

테스트 수행 VM을 Jenkins의 Slave Node로 등록

VM2를 Jenkins의 Slave Node로 추가합니다. 방법에 대해서는 아래 글을 참고하세요.

젠키스(Jenkins)에 노드(node) 추가하기

  Jenkins 대시보드에 테스트 리포트 주소 링크

Jenkins 메인 화면의 상세 내용 입력을 클릭한 후 이전 글에서 확인한 VM2의 GUITAR 리포트 주소 (http://<랩탑의 내부 아이피>:8080/report.htm)의 링크를 입력합니다.
이 링크를 통해서 Jenkins 사용자들이 테스트 리포트를 볼 수 있습니다.

만약 HTML 코드가 그대로 노출된다면 아래 글을 참고해서 진행하세요.

젠킨스(Jenkins)의 상세 내용 입력 방식을 HTML로 변경

  Jenkins에 GUITAR 테스트 프로젝트 추가

Jenkins의 새로운 Item 메뉴를 클릭하여 새로운 프로젝트를 생성합니다.

Item name에는 GUITAR_TEST를 입력하고 Freestyle project를 클릭하여 선택하고 저장합니다.


General → Restrict where this project can be run 항목을 체크하고 Label Expression에 위에서 생성한 Slave Node 이름을 입력합니다. 저의 Slave Node 이름은 GUITAR_TEST_NODE입니다.

Build → Add build step → Execute Windows batch command를 선택하고, Command 항목에는 아래의 명령을 입력합니다. 샘플 테스트 스크립트인 네이버 검색을 수행하는 명령입니다. <작업 폴더>/TESTCASE 폴더는 본인의 환경에 맞게 수정하세요.

cmd /c C:\GUITAR\BIN\guitar.exe E:\TESTCASE\SAMPLE\01_네이버검색\01_네이버검색.txt /TESTID:%BUILD_ID% /XMLPATH:%WORKSPACE% /REMOTE

빌드 후 조치 → 빌드 후 조치 추가 → Publish JUnit test result report를 선택하고, Test report XMLs 항목은 비워 두거나 report.xml을 입력합니다.

저장 버튼을 클릭하여 설정을 저장합니다.

  Jenkins에서 테스트 수행

GUITAR_TEST 프로젝트 화면에서 Build Now 버튼을 클릭하여 테스트를 수행합니다. VM2에서 Slave Node가 실행 중이고 이 Node에서 배치 명령이 실행되도록 프로젝트가 구성되었기 때문에, VM2에서 GUITAR 테스트가 수행됩니다.

수행결과는 테스트 서버와 공유한 VM2 리포트 폴더에 저장됩니다.

테스트 서버는 이 리포트 폴더를 웹으로 서비스하기 때문에 Jenkins 대시보드에 추가한 링크를 이용하면 테스트 결과 리포트를 볼 수 있습니다.


EOF


외부 Jenkins와 내부 네트워크 상의 GUITAR 테스트 환경 연동 1

이 글에서는 퍼블릭 IP를 가지고 외부에 설치된 Jenkins와 내부 네트워크의 Windows 랩탑에서 실행되는 GUITAR 테스트의 연동 방법에 대해서 다룹니다.
GUITAR 2.0.0.12 버전의 사용자 가이드에서 제시하는 내용을 실무에 적용한 경험을 정리했다고 보시면 됩니다. 따라서 부족한 부분은 GUITAR 사용자 가이드로 보충하면 되겠습니다.

  랩탑 설정

랩탑에는 톰캣과 VitualBox를 설치합니다.
톰캣은 Jenkins와 연동하여 각 테스트 환경(VM)의 테스트 리포트를 보여주기 위한 용도이며, VirtualBox는 실제 테스트를 수행하거나 테스트 스크립트를 작성할 VM을 운용하기 위해서 필요합니다.

  VirtualBox 설치 및 설정

VirtualBox를 다운로드 한 후 설치합니다. VirtualBox Extension Pack도 꼭 같이 설치해 주세요.
https://www.virtualbox.org/wiki/Downloads

GUITAR 테스트를 작성 및 수행할 OS를 기반으로 가상 머신(VM)을 2개 만듭니다. Windows 7을 추천합니다.

랩탑의 적당한 위치에 아래의 폴더를 만듭니다.

  • GUITAR_DATA - 모든 VM이 공유하는 GUITAR 작업 폴더
  • GUITAR_REPORT1 - VM1의 리포트 공유 폴더
  • GUITAR_REPORT2 - VM2의 리포트 공유 폴더

VM1은 테스트 작성용, 다른 하나(VM2)는 테스트 수행용이지만 테스트 서버에서 리포트를 보기 편하도록 각 VM의 REPORT 폴더를 테스트 서버(랩탑)와 공유하도록 설정하려고 합니다.

VirtualBox 관리자에서 VM2를 선택하고 설정(S) 메뉴를 클릭합니다.

공유 폴더를 클릭한 후 + 기호가 있는 공유 추가 버튼을 클릭하여 위에서 생성한 GUITAR_REPORT2의 경로를 폴더 경로에 입력하고 자동 마운트(A) 옵션을 체크하고 저장합니다.

마찬가지 요령으로 공유 작업 폴더를 추가하고, VM1에도 동일하게 공유 폴더를 추가합니다.

VM2에서 파일 탐색기를 띄워서 확인해 보면, 위에서 추가한 공유 폴더가 각각 E:\F:\ 드라이브로 매핑된 것을 볼 수 있습니다.


이제 각 VM에 GUITAR를 설치합니다.

VM2에는 Jenkins 연동을 위해서 추가로 Java SDK를 설치합니다.
랩탑에서 다운로드 한 후 공유 폴더를 이용해서 각 VM에서 설치토록 하면 편합니다.

각 VM에서 C:\GUITAR\BIN\guitar.ini을 편집기로 열고 리포트 폴더의 위치를 리포트 공유 폴더 위치로 변경합니다. Path = ..\Report 문자열을 검색한 후 공유 폴더 위치로 값(..\Report)을 변경하면 됩니다. 저는 F:\로 변경했습니다.

[REPORT]
AreaCaptureView = 세로
FullSizeImage = False
TestServerName =
OpenReport = True
OpenDashboardReport = False
LimitCount=100
;Path = ..\Report
Path = F:\
DashboardHost = http://localhost:8080
XMLReport = False

마찬가지로 작업 폴더의 위치도 랩탑과 공유한 작업 폴더 위치로 변경합니다. WorkPath = 문자열을 검색한 후 값을 변경하면 됩니다. 저는 E:\로 변경했습니다.

[SCRIPT]
;WorkPath = C:\GUITAR\DATA
WorkPath = E:\
;SVNPath = https://dev.naver.com/svn/guitar/xxxxx/branches/yyyyyy
PreLoadScript = 공용변수.txt
TemplateScript = 기본템플릿.txt
;PreRun ="%BINPATH%\gitpull.bat" %WorkPath%

마지막으로 VM1의 C:\GUITAR\DATA 폴더의 내용물을 공유 작업 폴더로 모두 옮겨 주고, 각 VM의 C:\GUITAR\Report 폴더의 내용물을 각각의 공유 폴더로 모두 옮겨줍니다.
작업 폴더는 모든 VM이 공유하기 때문에 VM1에서만 옮기면 모두가 공유합니다. 리포트 폴더에는 우리가 연동을 위해 사용할 스크립트와 실행 파일 등이 있기 때문에 옮겨줄 필요가 있습니다.

  Tomcat 설치

랩탑에 톰캣을 다운로드 한 후 적당한 곳에 설치합니다.
http://tomcat.apache.org/download-60.cgi

%TOMCAT_HOME%/conf/Catalina/localhost 폴더를 생성하고, 다시 ROOT.xml 파일을 아래 내용으로 생성합니다. docBase 속성의 값은 위에서 생성한 GUITAR_REPORT2 폴더의 경로입니다. 저는 F:/GUITAR_REPORT2로 넣었습니다.

<Context path="/" docBase="F:/GUITAR_REPORT2" reloadable="true"/>

URIEncoding 오류를 방지하기 위해서 아래와 같이 %TOMCAT_HOME%/conf/server.xml 파일의 8080 포트 커넥터 설정을 변경합니다.

<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           edirectPort="8443" URIEncoding="UTF-8" useBodyEncodingForURI="true" />

톰캣을 실행한 후 VM2의 GUITAR 리포트 주소 (http://<랩탑의 내부 아이피>:8080/report.htm)로 접속하여 연동이 잘 됐는지 확인합니다.

너무 길어져서 다음 글에서 이어 가겠습니다.


EOF

애플 무선 키보드를 윈도(Windows)에서 편리하게 사용하는 방법

애플 무선 키보드를 윈도에서 조금이라도 편하게 사용하려면 uxsoft의 Apple Wireless Keyboard를 설치해 보세요.
몇 가지 좋은점이 있습니다.

  • 볼륨 조절, 음악 재생기 제어 등의 기능키를 사용할 수 있습니다
  • DELETE 키를 사용할 수 있습니다(fn + delete)
  • Page Up, Page Down, Home, End 키를 사용할 수 있습니다(추가 설정이 필요합니다)

Apple Wireless Keyboard 는 아래 링크에서 다운로드할 수 있습니다.
http://uxsoft.cz/Projects/AppleWirelessKeyboard

참고로 제 설정의 스크린샷을 남깁니다.

EOF

젠킨스(Jenkins)의 상세 내용 입력 방식을 HTML로 변경

젠킨스의 메인이나 작업(프로젝트) 페이지에는 상세 내용을 입력하는 기능이 있습니다.


기본 설정으로는 Plain text만 입력이 가능한데요. 링크 등을 제공하기 위해서 HTML을 사용하고 싶을 때가 있습니다.
이런 경우 설정 변경을 통해 HTML 입력이 가능합니다.


설정은 간단합니다. 의외의 장소에 있어서 찾기가 어렵긴 하지만요.
Jenkins 관리 → Configure Global Security 메뉴로 이동한 후 Markup Formatter 항목의 값을 Raw HTML로 변경하면 됩니다.




EOF

젠키스(Jenkins)에 노드(node) 추가하기

젠키스(Jenkins)에 노드(node) 추가하기

CI 서버(Jenkins)는 EC2 등의 퍼블릭 IP로 접근 가능한 외부에 있고 특정 작업(job)을 사내에서 수행하는 경우 보안 문제 때문에 사내망을 CI에서 접근하도록 허용하는 건 어렵습니다. 이런 경우에 대한 해결책으로 자바 웹스타트를 통해 사내에 젠킨스 노드를 추가 할 수 있습니다. 제 경우는 사내의 Windows 랩탑에서 GUITAR 테스트를 수행하기 위해서 이 방법을 택했습니다.

Jenkins 관리 → 노드 관리 → 신규 노드 메뉴를 이용해서 노드를 추가합니다.

노드명을 입력하고 Permanent Agent를 선택한 후 OK 버튼을 클릭합니다.

이어지는 화면에서 Remote root directory에는 c:\jenkins를 입력하고 Launch method는 Launch agent via Java Web Start를 선택합니다. 나머지 설정은 기본 값을 유지하고 저장합니다.

아직 새 노드와 연결이 안됐기 때문에 노드 목록에는 오프라인으로 나옵니다. 이제 연결을 해야 합니다.

사내망 안의 Windows 랩탑에서 위에서 생성한 노드 화면에 접속합니다. Launch 버튼을 클릭하면 jnlp 파일(slave-agent.jnlp)을 다운로드 혹은 바로 실행할 수 있습니다. 혹 보안 경고가 뜨더라도 무시하고 jnlp 파일을 실행하세요. Jenkins slave agent가 실행되고 젠킨스 서버에 접속 중이라는 내용이 나오다가 곧 Connected로 내용이 변경됩니다. 만약 접속이 안되면 접속 중인 젠킨스 서버의 포트를 확인하세요. 접속 중 화면에 나온 포트(42031)가 접속 가능한지 확인하면 됩니다.

JNLP 에이전트의 포트는 무작위로 할당됩니다. 포트 고정이 필요하면 Jenkins 관리 → Configure Global Security 메뉴에서 TCP port for JNLP agents를 Fixed로 변경하고 원하는 포트 번호를 넣으면 됩니다.

이제 노드 화면을 새로고침하면 JNLP로 연결된 것으로 내용이 변경된 것을 확인할 수 있습니다.

노드 관리 화면의 목록에도 새 노드의 정보가 나옵니다.

랩탑을 재부팅 했을 때에도 연결을 유지하려면 Jenkins slave agent의 File → Install as a service 메뉴를 이용해서 윈도 서비스로 등록하면 됩니다.


EOF