안녕하세요 저번 포스팅에서 Jenkins를 Windows.Ver으로 설치 하였습니다.(Windows 7 64bit)


설치도 하였고 기본 적인 설정 및 Jenkins 서비스를 재시작 하는 부분 까지 포스팅 하였는데요


사실 빌드 자동화 및 배포 를 위한 Jenkins는 CentOS 7 에 설치 하여서 진행하고 


이게 더 관리도 좋고 편합니다. 


윈도우 젠킨스 설정 및 사용 (Windows .ver with Jenkins)

https://ipex.tistory.com/entry/Jenkins-%EC%9C%88%EB%8F%84%EC%9A%B0-%EC%A0%A0%ED%82%A8%EC%8A%A4-%EC%84%A4%EC%A0%95-%EB%B0%8F-%EC%82%AC%EC%9A%A9-Windows-ver-with-Jenkins?category=767972


하지만 이번에 하는 작업은 회사에서 사용하고 있는 private web-front-end framework 

(TOP.js - TmaxDay 에서 공개 했으니까 이름정돈 공개 해도 될것 같습니다.) 


에 대한 자동화가 필요하기 때문에 (Windows 7 64bit) 에서 하여야 합니다. (IE 때문!)  프론트 프레임워크를 QA를 혼자 하고 있다보니 (개발연구원 수십명인뎅..) 자동화가 급박해졌습니다. 


Jenkins 에서 Build Job을 실행하는 작업은 생략 하겠습니다.


대강 러프하게 그려본 도식도는 이렇습니다. (현재는 이대로 돌아가고있습니다.~~ v)


엄청 러프하게 그렸는데 사실은 처음에 혼자 이렇게 되기가 힘들거같았는데 막상 하다보니 이것도 뭐 복잡한건 아닌것 같습니다..(그리고 너저분하다는 생각도 들어서 계속 수정해 나가야 합니다.)


해당 도식도 중 카테고리가 CI이기 때문에 Jenkins 관련해서만 작성할 예정입니다.


1. General

기본적인 내용 및 옵션 입니다.   


추가적으로 저는 오래된 빌드를 삭제 하는걸 체크하였는데 20~30일정도로 설정하였습니다.


(테스트 결과는 testLink 에 저장도 되고 node 서버에 dbms로 도 저장합니다..)


2. 소스 코드 관리 

소스코드 관리 입니다. 빌드 시작전에 어떠한 코드로 자동화를 돌려야 할지 자동화 테스트 코드를 관리 하는 부분입니다.

전체적으로 자동화 관련된 프로젝트는 4가지가 있습니다.

*Node.js (express)

express 로 만들어진 서버이며 mysql 을 DBMS로 가지며 테스트 결과를 저장합니다.

또한 ajax 등 비동기 테스트를 위한 서버이기도 하며 그 외에 서버를 통해야 하는 작업들을 위한 테스트 서버입니다. (더미데이터 등등)


**Node.js 서버는 testLink 에 테스트결과를 Update 할때 필요한 Junit.xml을 xmlBuilder를 통해 제작하는등 여러 기능들이 있습니다.


*Top.js(private web-front-end framework )

Top.js의 많은 Component 와 Container 및 Layout등을 테스트를 위한 초점으로 만들어진 Client 페이지입니다.

해당 프로젝트는 자사의 JEUS 6,7,8 로 구성되어 Deploy 되어있습니다.


End Point

해당 페이지의 특정 버튼을 누르게되면 테스트결과를 가지고있다가(자체 제작 모듈)

testLink 를 연동하기 위한 테스트 결과를  Node 서버로 전송합니다.


*Selenium-WebDriver + (IE Driver or Chrome Driver or FireFox Driver)

Top.js로 만들어진 페이지를 자동으로 테스트하기 위한 Test Runner 입니다. 3가지의 브라우저가 동작하여야 하기 때문에 해당 프로젝트에서는 내부적으로 ie , chrome,firefox 등 여러 드라이버가 설치 되어있으며 파라미터를 통해서 원하는 드라이버를 require 하여   테스트를 시작합니다.


* React.js (redux,react-redux,sass,react-router,... )

React.js로 만들어진 페이지입니다. 내부 private 프레임워크만 하다보니 다른것도 흥미가 생겨서 하게 된것도 있지만 Top가 버전업이 되었을 때 무조건 동작이 잘되리라는 보장이 없기 때문에 View를 위한 (테스트결과 추이 등을보기 위한) 페이지가 필요합니다. 

(물론 안정화된 top버전을 통해서 간단한 페이지를 만들수도있지만  react.js도 해보고싶었습니다.)


해당 4개의 프로젝트가 존재 하는데 어디서 소스코드를 가져와야 하나  


글씨 크기를 보면 아시겠지만  Selenium-WebDriver  입니다. 테스트를 시작하기 위해서는 사람을 대신할 객체가 필요한데  셀레니엄이 브라우저도 열고Top.js 의 End Point 까지 테스트를 진행합니다. (마지막엔 결과를 서버로 전송)


소스 코드 관리를 말하기전에 서두가 너무 길었지만      git을 통해서 관리합니다.  


Repository URL 란에 git을 선택 해주시고 git clone 에 사용하는 주소(HTTP) 를 넣어 줍니다.


그리고 Credentials 을 입력하기 위해서 우측에 Add를 선택하고  아래의 provider에서 입력 합니다.



기본적으로 나와있는 것을 제외하고 사용자가 입력하여야 하는 부분에 대해서 말씀드리자면


Username : Gitlab ID

Password : GitLab Password 

ID : Credentials 을 눌렀을 때 표시될 이름 (ex: seleniumTestCode)

Description : 작성하는 중인 Credentials 에 대한 설명 


Add버튼을 눌러 생성하게 되면 Credentials 드랍 박스에서 위의 설정한 ID가 표시되게 됩니다.


선택합니다.


-Branch Specifier (blank for 'any') 에 가져올 위치인 */master 입력 


!!! 빌드 시작시 소스코드를 최신으로 땡겨오게 됩니다.


// node_modules 는 gitlab 에는 올리지 않지만 편의를 위해서  내려받은 package.json 에 대해

// npm update를 미리 한번 해주었습니다.



Build Job 은 현재 3가지가 있습니다. (포스팅할때는 이미 다 해놓은 상태에서 포스팅!)


IE Automation

Chrome Automation

FireFox Automation 


3개의 Build Job은 다 같은 형태로 돌아갑니다. (Node.js 드라이버 실행시 파라미터만 다릅니다.)

// _auto.js ie 

// _auto.js chrome

// _auto.js firefox

3. 빌드 유발 

3개의 Job(IE,Chrome,FireFox) 에 대한 빌드 유발을 어떻게 할것인가 인데 

(현재는 Selenium-webDriver의 testCode가 push 또는 merge request 발생시)

스크립트로 원격 유발같은거 있는데 이거 한번 해보려고합니다.


RND서버에 새로운 버전이 올라왔을 시에 대한 점검 로직은 없기 때문에 특정 위치를 바라보는 Watcher를 만든 후에 새로운 버전이 올라왔음이 감지되면 자동으로 내려받아서 빌드를 시작할수 있도록 ;; 


webhook 에 대한 기본 트러블 슈팅은 해당 링크

https://ipex.tistory.com/entry/gitlab-%EC%9B%B9%ED%9B%85webhook-Internal-Error-500


Jenkins 에 GitLab Plugin 이 설치 되어 있어야 합니다.


4. 빌드 환경

Delete workspace before build starts 라는 것이 있습니다. (빌드전 워크스페이스를 비우는 작업)


고급 탭을 누른 후에 ant style pattern 을 적용하여서 


현재 돌아가는 빌드의 workspace 


Windows의 경우는 (C:\Program Files (x86)\Jenkins\workspace\빌드이름)


에 있는 폴더를 빌드 시작전에 삭제 해주는 역할을 합니다.


이 작업을 해주는 이유는 testLink 가 해당 폴더에 있는 testCase를 보고  테스트 실행을 할건데


기존에 작업했던 것이 남아있어서 테스트가 꼬일까봐 매번 작업전에 지워줄수 있도록 세팅 합니다.


아래와 같이 작성시에는 workspace/chromeBuilding 폴더와 그 하위 파일들이 전부 지워진 후 Build로 넘어갑니다.



5. 빌드

빌드는 2가지로 나뉩니다. 

5.1 Selenium-WebDriver


5-2 TestLink 




빌드 작업에 대해서는 다음 포스팅에서 하겠습니다.


읽어 주셔서 감사합니다.







+ Recent posts