jenkins를 설치하지 않았다면 아래 글을 참조하자
2019/04/19 - [Web/Tool] - 젠킨스 설치하기
개발 기간동안 개발 환경이 제대로 구축되어 있지 않거나 배포 과정이 복잡해지면 그만큼 개발 기간이
늘어날 수밖에 없다.
이전 PHP 프로젝트에서는 gitlab의 gitlab-runner 만 가지고 수정된 파일을 업로드 하는 것으로 끝냈었다.
하지만 maven 프로젝트의 경우 build 과정도 필요하고 좀 더 디테일한 CI를 위해 jenkins를 도입하기로 했다.
현재 gitlab으로 관리되고 있는 maven 프로젝트를 jenkins와 연동시켜 개발 서버(tomcat)로
자동 배포하는 과정을 적용해보자
1. jenkins 초기 세팅
- JDK, Git, Maven Tool path설정
1.1 JDK 설정
- install automatically를 해제하고 현재 젠킨스 서버에 설치된 경로를 직접 설정해 주어야 한다.
- JAVA_HOME 안잡혔을 경우
root@q381-0612:/usr/bin# echo $JAVA_HOME
/usr/lib/jvm/java-8-openjdk-amd64
- JAVA_HOME 안잡았을 경우
1.2 Maven 경로
- maven은 설치 안했을 경우가 많으므로 다운로드 해서 사용하자 (https://maven.apache.org/download.cgi)
- apt install maven 을 사용해도 되지만 필자는 홈페이지에서 다운로드 받아서 사용했다.
wget -c http://us.mirrors.quenda.co/apache/maven/maven-3/3.6.1/binaries/apache-maven-3.6.1-bin.tar.gz
- /home/maven 아래에 다운 받은 뒤에 아래와 같이 셋팅했다.
- Install automatically 을 사용해서 설정해도 무방할 것 같다
1.3 git 경로
2. jenkins / gitlab / tomcat 연동 준비 설정
- 기본적인 jenkins 설정은 끝났으므로 gitlab과 연동을 위한 기초 설정을 준비하자
2.1 plugin 설치
- 초기에 suggested plugin 을 깔았으나 그 외 필요한 plugin들을 설치해주자
- jenkins 관리 > 플러그인 관리 > 설치 가능 > 검색
- 필요 plugin : gitlab plugin, Maven Integration plugin
2.2 gitlab 계정 추가
- 프로젝트에서 git 으로 접근시 사용할 계정을 추가해주자
- Credentials > System > Global credentials 를 누른다.
- Add credentials 를 누른다.
- 추가할 프로젝트에 대한 권한이 있는 계정의 username과 password를 입력한다.
- 하단의 ID, Description은 젠킨스에서 관리하는 것이므로 입력을 안해도 되고 편한대로 넣자
2.3 GitLab api access token 설정
- 위의 계정 등로과 함께 계정에 대한 access token을 별도로 등록해주어야한다.
- 날짜를 기입하지 않으면 무기한이다
- Token을 확인할 수 있다.
- Credentials > System > Global credentials > Add credentials 에서 Kind를 GitLab API token으로 선택
> API token을 입력 > ID,Description 입력(선택) > OK
2.4 tomcat 접근 유저 설정
- jenkins에서 원격 개발서버에 접근 가능한 tomcat 계정을 추가해주자
- 추가 후 2.2 와 같이 설정을 한다음 ID로 구분하는 것도 좋다.
vim /var/lib/tomcat8/webapps/tomcat-users.xml
<!--
tomcat에 접근 가능한 user 설정 부분
-->
<tomcat-users xmlns="http://tomcat.apache.org/xml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
version="1.0">
<!--
role 태그는 사용자가 어떤 역할을 하는지 설정해준다.
해당 부분에서 유저마다 IP 설정이 가능하다
-->
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<role rolename="admin-gui"/>
<role rolename="admin-script"/>
<user username="root" password="123456789" roles="manager-gui,manager-script,manager-jmx,manager-status,admin-gui,admin-script"/>
</tomcat-users>
3. jenkins에 maven 프로젝트 등록
- 젠킨스 초기 메뉴에 새로운 item을 클릭하여 프로젝트를 추가하자
- 프로젝트 이름 입력 > Maven project > OK
3.1 General 메뉴 설정
- 빌드 유지 기간은 서버에 따라 설정한다.
3.2 소스 코드 관리
- git url을 등록하면 아래에 권한이 없습니다를 길게 표현한 에러 문구가 나올 것이다.
- Credentials 에서 미리 등록한 name/password를 선택하여 준다.
- 필요시 branch에 대한 설정을 할 수 있다.
3.3 빌드 유발(Build triggers)
- Build when a change is pushed to GitLab. ~~~ 를 선택한다
- 뒤에 URL은 젠킨스 프로젝트 주소이다 URL:http://주소/project/프로젝트명
- 프로젝트 주소는 후에 gitlab에서 webhook 등록시 필요하므로 기억해두자
- 고급 탭에서는 secret token을 generate해준다 위의 URI 와 함께 GitLab에서 쓰일 항목이다.
3.4 Build
- git 저장소에서 pom.xml 위치를 적어준다.
- 2번째 칸은 clean package 입력
3.5 빌드 후 조치
- Deploy war/ear to a container를 선택하자
- war 파일로 배포할 것이기 때문에 WAR/EAR files에 [ **/*.war ] 를 입력한다.
- 배포할 서버 url 에 설치한 Tomcat 버전을 선택해준다.
- Tomcat 서버 url 과 이전에 추가한 tomcat 접근 유저를 선택한다
- 저장( 프로젝트 생성 )
4. Build 해보기
- build now를 눌러보자
- 왼쪽 하단에 Build History 에서 빨간색 표시가 생기며 실패하였다.
- error 내용을 확인하려면 #1 에 마우스를 가져가면 화살표가 생기는데 Console Output을 눌러
로그를 확인할 수 있다.
- Unknown lifecycle phase 오류
- clean을 잘못 입력해서 celan이 들어갔다.
- 수정을 하려면 프로젝트를 누르고 좌측에 [구성]을 눌러주고 수정하면 된다.
- 파란색으로 되면 Build 완료 후 배포가 된 것이다.
- 원격 개발 서버로 들어가면 확인이 될 것이다
5. Gitlab webhook을 이용하여 자동 배포하기
- git에 올리고 젠킨스에서 [ Build Now ]를 눌러서 원격개발서버에 수동 배포를 한 것이다.
- 우리의 목표는 git에 push 하면 개발서버까지 자동 배포되어 젠킨스를 들어가지 않는 것이다.
- GitLab의 webhook 기능을 이용하여 자동 배포를 하자
- 우선적으로 필자는 GitLab과 Jenkins를 같은 서버에 설치했는데 같은 서버끼리 webhook을 통신하게
하려면 한가지 설정이 필요 하다.
- gitlab 설정 > Settings > Network > Outbound requests 에서 로컬에서 hook을 사용 할 수 있게
체크해주고 저장한다.
- 다음 프로젝트 설정 부분으로 넘어가자
- 연동시킬 프로젝트에서 Settings > Intergrations 를 누르면 webhook에 대한 설정을 추가할 수 있다.
- 3.3 빌드 유발 부분에서 얻은 jenkins 프로젝트 URI와 Token 을 입력한다.
- SSL은 필요한 사람은 체크해주자
- 설정 아래에 webhook이 추가된 것을 확인할 수 있다.
- Edit으로 들어가서 Test를 할 수 있고 아래에 테스트 결과 값을 받아 볼 수 있다.
- 결과값이 200 정상으로 찍히면 실제로 소스에 push 이벤트를 날려본다.
- jenkins에서 빌드가 되며 tomcat에서 바뀐 내용을 확인할 수 있다.
'Web > Tool' 카테고리의 다른 글
[ GitLab ] gitlab-runner build path 재설정하기 (0) | 2019.04.24 |
---|---|
젠킨스 설치하기 (1) | 2019.04.19 |
Atom - sync-setting 패키지 사용법 (0) | 2019.04.11 |
댓글