Leeyebin의 블로그

[Jenkins]사내 전산시스템 젠킨스 도입기(feat ant/넥사크로)[3/3] 본문

프로그래밍/DevOps

[Jenkins]사내 전산시스템 젠킨스 도입기(feat ant/넥사크로)[3/3]

안되면될때까지 2020. 4. 15. 23:59

그외 팁

 

1. 소스 공유

필자의 사내 전산시스템의 프로젝트의 안에 소스는 넥사크로(front)와 자바 파일로 구성되어있는데

젠킨스에서는 하나의 svn프로젝트에 web빌드와 was빌드로 job을 나눠놨다. 젠킨스에서는 workspace에서 job단위별로 작업장을 만든다. SVN이 같더라도 JOB이 다르면 각 JOB폴더에 같은 소스더라도 각각 JOB에 따로 받는다.

어차피 같은 SVN에서 받아서 Ant build를 돌릴거면 하나의 소스를 바라보고 build를 하게 할 수는 없을까 하다가 찾아보게 되었다.

 

본인은 C:\Jenkins 에 젠킨스를 설치하였는데 여기에 하위폴더를 만들어놓는다.

예) C:\Jenkins\test

 

JOB에가서 구성을 클릭한다.

"General"탭에 고급을 누르면 아래와같이 나온다.

test라고 세팅을 해주면 job이 있더라도 새로 선택한 저 위치 빌드 경로가 되며, 형상관리 소스를 받아준다.

 

그래서 같은 소스를 사용하는 job이 여러 개가 있다면 "사용자 빌드 경로 사용" 을 세팅하면 용량을 아낄 수 있다.

(반드시 주의 : 빌드를 동시에 하면 충돌이난다. 순차적으로 해야함.)

 

2. 스케쥴링(문법)

필자의 회사에서 처음에 젠킨스를 구축하고 몇일간은 빌드주기가 불명확해서 일일히 빌드버튼을 눌렀지만, 이후부터는 평일 월요일~금요일까지 1300~1310까지 재기동 일정이 있어서 그전에 Build&Deploy를 해놓아야 했다.

그래서 자동으로 스케쥴링을 하는 기능을 상용하기로하였다.

"빌드유발" 탭에 있는 "Build periodically"(주기적인 빌드)에 체크하고 문법에 따라서 숫자를 입력하면된다. Schedule란에 textarea 우측에 물음표를 클릭하면 문법에 대해서 설명이 나와있다.

*의 의미는 상관없이 항상 이라는 뜻이다.

나 같은경우에는 30 12 * * 1-5(거꾸로 읽으면된다. 앞에서부터 분, 시, day, month, 요일로 되어있으며, 각 항목 사이사이에는 띄어쓰기 한칸을 해준다.

오후 12시 30분 월요일부터 금요일에 빌드한다.(30 12 * * 1-5)

 

3. 재기동시 문제

WAS가 제우스이기 때문에 재기동까지 구현할 계획은 있었지만 회사 내부적인 사정도 있는지라 조사해둔 것만 정리하도록하겠다.

 

젠킨스를 이용해서 재기동 스크립트를 실행한다면, JOB이 종료되는 시점에 재기동이 돌고있는 스크립트(프로세스)까지 바로 꺼져버리는 문제가 발생한다. 그래서 JOB이 종료되더라도 특정 스크립트는 종료되지 않도록 예외처리를 선언해야한다. 아래 사이트를 참고하자. 인터넷에는 "Jenkins dontkillme"로 검색하면 다양한 자료들을 볼 수 있을 것이다.

아래 사이트는 jenkins사이트에 있는 정보이다.

https://wiki.jenkins.io/display/JENKINS/ProcessTreeKiller

 

ProcessTreeKiller - Jenkins - Jenkins Wiki

This feature is available since 1.260 To reliably kill processes spawned by a job during a build, Jenkins contains a bit of native code to list up such processes and kill them. This is tested on several platforms and architectures, but if you find a show-s

wiki.jenkins.io

 

 

 

 

 

 

https://yookeun.github.io/tools/2018/04/14/jenkins-remote/

https://kingbbode.tistory.com/35

Comments