본문 바로가기
Web/Tool

jenkins / gitlab / maven / tomcat 자동 배포

by 기저귀찬개발자 2019. 4. 23.

jenkins를 설치하지 않았다면 아래 글을 참조하자

 

2019/04/19 - [Web/Tool] - 젠킨스 설치하기

 

젠킨스 설치하기

환경 Ubuntu 16.04 jdk 1.8.0 다운로드는 젠킨스의 ubuntu download 부분을 참고하였다. (https://pkg.jenkins.io/debian-stable/) 1. package repository 추가 wget -q -O - https://pkg.jenkins.io/debian-stabl..

dev-joo.tistory.com

 

개발 기간동안 개발 환경이 제대로 구축되어 있지 않거나 배포 과정이 복잡해지면 그만큼 개발 기간이

늘어날 수밖에 없다. 

 

이전 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을 클릭하여 프로젝트를 추가하자

 

Jenkins 메뉴

 - 프로젝트 이름 입력 > 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

댓글