-
[Jenkins] Maven 프로젝트 Build 하기설치&설정 관련 2016. 10. 31. 14:09728x90
프로젝트가 진행될때 가장 먼저 하는 일중 하나는 자동 배포 시스템 구축 입니다.
이것의 존재 유무가 프로젝트에서 가장 많이 일어나는 배포의 시간을 단축 시킬 수 있습니다.
이로 인한 생산성 증가는 전체 프로젝트 금액의 30% 이상을 차지 합니다.
하루 2, 3회 배포시 파일을 압축하고 서버에 올리는 작업 시간을 10분으로 잡을 경우 하루 약 20, 30분을 낭비 하게 됩니다. 이는 일일 8시간 근무 기준 약 6%(30/480) 를 허비 하게 됩니다.만약 파일 배포 할 서버가 2대 이상일 경우 배포 시간은 기하 급수적으로 늘어나게 됩니다.1. Jenkins 설치 하기
Jenkins[1] 는 java로 만들어진 오픈 소스로 서버에 파일 배포를 지원하며, 추가적으로 100 개 이상의 플러그인이 지원되어 Linux의 crontab 을 대신하여 WEBUI 를 제공하여 배치용으로도 사용 됩니다.
1.1. JDK 설치
JDK 는 oracle 의 JDK와 openJDK 로 나누어 집니다. 배포가 가능한 버젼은 openJDK이며, 다음[2] 에서 확인 하여 쉽게 설치 할 수 있습니다.1.2. Apache Tomcat 설치
Tomcat 은 가장 범용적이고 많이 사용되는 Java Web Application Server(WAS) 로서 무료로 다운로드 [3]및 사용이 가능합니다. core 파일을 받아서 압축을 풀고 환경 변수만 마춰주면 쉽게 기동할 수 있습니다.1.3. jenkins war 다운로드
다음[4] 에서 원하는 버젼의 jenkins를 다운 로드 합니다. 이후 $TOMCAT/webapps 밑에 war 파일을 이동 후 tomcat 을 기동 하면 됩니다.
접속 주소는 별다른 수정을 하지 않으셨다면 다음과 같습니다.
http://localhost:8080/jenkins
2. jenkins 설정 하기
tomcat 기동이 완료 되면, 최초 lock을 풀기 위해 특정 위치의 암호 파일을 읽어서 web페이지에 적어 주면 설정 파일을 시작 합니다.
기본적으로 많이 사용하는 설정을 클릭함고 관리자 패스워드를 설정하면 대부분의 설정이 마무리 됩니다.
3. Mavne 프로젝트 배포 생성하기
[그림 -1] item 추가
[그림-2] source 위치 지정(git, SVN 등..)
[그림-3] Build 설정
Build 설정의 goals and options 는 여러 옵션이 있으나, 기본적인 clean install 을 사용 함
[그림-4] Build 이후 실행할 shell 지정
자세한 shell 내용은 5번을 확인 하자
4. Maven 프로젝트 배포 테스트
Jekins에서 생성된 item을 실행 하면 된다
[그림-5] Jenkins 시작 화면5. 2대 이상의 서버로 배포 하는 SHELL 작성
기본적인 bash shell로 다음 샘픔을 참고 하면 쉽게 접근 할 수 있다.1. post Steps Shell#!/bin/bashssh root@web "su - root -c '/home/tomcat-8.0/bin/shutdown.sh'"sleep 10scp /root/.m2/repository/kr/pe/lahuman/api/0.8/api-0.8.war root@web:/home/tomcat-8.0/webapps/api.warssh root@web "su - root -c '/home/tomcat-8.0/bin/startup.sh'"ssh root@web "su - root -c /home/build-web2.sh"2. build-web2.sh#!/bin/bash
WEBPING=0
until [ $WEBPING == "200" ];
do
echo $WEBPING
WEBPING=$( curl -sL -w "%{http_code}\\n" "http://localhost:8097/" -o /dev/null)
echo --- sleeping for 10 seconds
sleep 10
done
ssh root@web2 "su - root -c '/home/tomcat-8.0/bin/shutdown.sh'"
sleep 10
scp /home/tomcat-8.0/webapps/api.war root@web02:/home/tomcat-8.0/webapps/api.war
ssh root@web2 "su - root -c '/home/tomcat-8.0/bin/startup.sh'"
WEBPING=0
until [ $WEBPING == "200" ];
do
echo $WEBPING
WEBPING=$( curl -sL -w "%{http_code}\\n" "http://web2:8097/" -o /dev/null)
echo --- sleeping for 10 seconds
sleep 10
done
6. 오랜 시간이 걸리는 작업에 대한 처리
Jenkins 에서 오랜 시간이 걸리는 작업을 실행하면 timeout을 내뱉으며 오류가 나거나, 아무런 오류없이 프로세스가 다 돌지 않고 종료가 되는 경우가 종종 있다.
이때 사용하는 방법은 daemonize[5]를 이용하는 방법이다.
우선 daemonize를 설치 한다. 설치 방법은 간단하게 brew를 이용하거나, git 에서 download 를 한후, 간단하게 make & make install을 진행 하는 방법이 있다.
Clone the Git repository
You can also simply clone the git repository, using one of the following commands.
Installation
Once you’ve unpacked the source, change your working directory to the daemonize directory. From there, building and installing the code is fairly typical:
For a detailed report of the available
configure
options:$ sh configure --help
[참조-5] 설치 내용 발췌
이로서 간단한 jenkins에 대한 설치에서 배포까지에 내용 정리를 마친다.
참고 자료 :
[1] https://jenkins.io/
[2] http://openjdk.java.net/install/
[3] https://tomcat.apache.org/download-80.cgi
[4] http://mirrors.jenkins-ci.org/war/
[5] http://software.clapper.org/daemonize/
728x90'설치&설정 관련' 카테고리의 다른 글
Redis 설치 및 Cluster 구성 (0) 2017.03.07 [Jekyll]github에 개인 블로그 구축 하기 (0) 2017.02.03 [NGINX] proxy_pass 설정 후 상세 내용 LINK URL 패턴 자동 변경 (0) 2016.08.01 [TIP]Json 으로 데이터 반환 시 NULL 인 객체 제외 처리 (0) 2016.04.15 [TIP] mybatis innerclass 호출 (0) 2016.04.15