System Engineering/CI, CD

CI/CD #7. Gitlab과 Jenkins Maven 빌드 설정

ZunoXI 2021. 6. 6.

개요

Gitlab과 Jenkins의 Webhook을 통한 연동 과정 정리

Jenkins Maven

이번 포스팅에서는 Gitlab 설치형 서버와 Jenkins 간의 소스 연동과 빌드 시 Maven으로 빌드하는 과정에 대해 정리한다. 해당 포스팅은 필자의 작업환경에 설치형 gitlab과 jenkins, 그리고 gitlab 저장소에 Maven으로 빌드할 수 있는 Spring-boot 프로젝트가 사전에 준비되어있음을 전제로 한다.

 

 

준비물

  • gitlab 저장소(깃랩에서 호스팅 하는 서버, 설치형 서버 모두 사용 가능)
  • jenkins 서버(필자는 자체적으로 설치하여 사용 중)
  • Maven 빌드가 가능한 Spring 프로젝트(gitlab 저장소에 on-loading 된 상태)

 

참고문헌

  • Pro Git (프로 Git) 2판

 

 

 

1. Jenkins 환경설정

 

 

Jenkins 플러그인 설치

 

 

Jenkins 관리에서 플러그인 관리를 선택 후 'Deploy to container'와 'Post build task' 플러그인을 재시작 없이 설치한다.

 

 

 

 

 

 

 

 

포스팅했던 jenkins 설치 글을 참고해서 설치했다면 이미 github, gitlab 플러그인은 설치되어있을 것이다. 설치한 적이 없다면 링크를 참고한다.

 

Jenkins 관리 > 플러그인 관리 > 설치 가능 탭에서 git 검색

 

 

 

 

 

Jenkins CI 도구 설정

 

Jenkins > Jenkins 관리 > ‘Global Tool Configuration’ 선택

 

 

JDK 

 

 
  • JDK 1.8 : jenkins가 주로 작동될 환경의 jdk 버전
  • JAVA_HOME : 해당 JDK의 경로 (echo $JAVA_HOME 혹은 which java로 확인)
  • install automatically 체크박스는 해제(jdk가 서버에 설치되어있다는 전제)

 

git 설정

 

git을 Jenkins서버에 설치한 경우에는 install automatically 박스를 해제해도 좋다. 필자는 별도로 설치하지 않았기 때문에 아래와 같이 체크박스를 선택했다.

 

 

 

Maven 설정

 

Add Maven 버튼 클릭 후Maven 3.6.0 기입, Install from Apache도 3.6.0으로 버전을 맞춘다. 그리고 install automatically 체크 및 하단의 Save 버튼 클릭

 

 

2. Jenkins Gitlab 연동

 

Gitlab Access token 발행

 

Gitlab 로그인 후 사용자 탭에서 Preferences > Access Tokens 선택 후 Token Name 기입

 

 

 

 

몇 가지 설정들을 체크해주고 personal access token을 생성한다. 생성된 토큰값은 메모장 같은 곳에복사해둔다.

 

 

 

Jenkins로 이동후 Jenkins관리 > Manage Credentials

 

 

 

새로운 Credentials key를 만든다. 종류는 Gitlab API token를 선택하고 복사해두었던 Token값과 만들 Credentials의 ID를 정하여 기입한다.

 

 

 

Jenkins관리 > 시스템 설정 선택 > Gitlab 설정란에 Gitlab Connection 이름, Gitlab서버 주소(이경우에는 설치형 서버이니 서버 IP 혹은 별도 도메인), 사용할 Credentials 선택 후 Test Connection으로 정상 연결이 되는지 확인한다.

 

 

 

Success가 뜨면 성공!

 

 

 

3. Jenkins 프로젝트 구성

 

 

 

item 생성 및 설정

 

item 생성

 

새로운 item을 클릭 후 item 이름을 정하고 Freestyle project를 선택한다. jenkins의 아이템을 선택하는 방법에는 여러 가지 방법이 있다. 추후 쿠버네티스까지 배포에 있어서는 Infrastructure as Code의 개념인 파이프라인으로 구성하는 것을 계획하고 있다. 본 포스팅에서는 편의를 위해 Freestyle Project를 선택하고 OK 버튼을 눌러 진행한다.

 

 

 

 

Gitlab Connection 부분에 우리가 만들어준 Connection을 선택한다.

 

 

 

 

 

gitlab 소스 저장소 지정

 

Maven빌드가 가능한 소스가 위치한 gitlab repo(저장소)를 지정한다. 당연히 위 연동한 gitlab계정이 접근 가능한 소스코드 저장소여야 한다. 지정하는 방법은 먼저 gitlab 저장소의 http주소를 복사하고 젠킨스 소스코드 관리에 붙여 넣는다.

 

 

 

처음 복사해서 붙여 넣었을 시 필자 같은 경우 private repo로 접근권한이 없기 때문에 위와 같은 에러 메시지가 출력된다. 이는 하단 Credentials 우측 Add 버튼을 눌러 신규 Credentials를 추가해주면되는데, 추가 시 Kind에는 Username with password를 선택하고 Username에 gitlab계정 id 혹은 name, pw에는 gitlab 계정 비밀번호를 입력한다.

 

 

 

 

이후 생성한 Credential을 선택하면 에러메시지가 아래와 같이 사라지는 것을 확인할 수 있다.

 

 

 

 

 

Jenkins 빌드 설정

 

 

하단 Build항목에서 'Add build step' 카테고리 버튼을 클릭 후 Invoke top-level Maven targets를 선택한다. 선택 후 Maven Version은 위에 우리가 지정했던 대로 Maven 3.6.0 버전을 선택하고 Goals에는 'clean package'를 입력한다.

 

 

 

 

 

clean package를 입력하는 이유는 링크를 참고

 

 

Jenkins 빌드 후 조치 설정

 

빌드 후 조치 항목에 빌드 후 조치 추가 버튼을 클릭 후 Post build task를 선택한다.

 

 

스크립트에는 다음과 같은 내용을 기입한다.

 

nohup java -jar /var/lib/jenkins/workspace/webhook_test/target/CICDTEST-0.0.1-SNAPSHOT.jar &

 

여기서 nohup java -jar는 빌드된 jar 파일을 백그라운드로 실행하라는 뜻이며 빌드가 완료되면 젠킨스 서버의 워크스페이스에 해당 젠킨스 아이템명으로 타깃 폴더 내 jar파일이 생성되는데 이를 실행시키라는 의미이다. 아래와 같이 기입 후 저장버튼을 클릭하면 된다.

 

 

 

 

 

4. Build Test

 

build now 클릭

 

 

 

최초 Maven 관련 패키지를 다운로드하는데 장시간이 소요된다. console output을 통해 로그를 실시간으로 확인이 가능하며, 현재 설정상 Jenkins 서버에 애플리케이션이 구동될 것이다. 이는 브라우저를 통해 http://jenkins서버 ip:port(애플리케이션에 설정한 것 기준)로 접속 후 애플리케이션이 정상적으로 구동 중인지 확인할 수 있다.

 

 

 

다음 포스팅에서는 Webhook을 통해 git 저장소에서 Push시 자동으로 Jenkins에 Maven 빌드 및 실행이 가능하게 구성해보고자 한다.

 

 

 

 


해당 포스팅은 다음 블로그로부터 이전 및 수정되었습니다 :)

https://zunoxi.github.io/devops/2021/04/07/devops-cicd-webhook/

 

CI/CD 8. Gitlab과 Jenkins Webhook 연동 및 Maven 빌드

개요 Gitlab과 Jenkins의 Webhook을 통한 연동 과정 정리 목차 1. Jenkins 환경설정 2. Gitlab 연동 Webhook 이번 포스팅에서는 Gitlab 설치형서버와 Jenkins서버간 Webhook을 통해 연동하고 Maven으로 빌드하는 과정

zunoxi.github.io

 

반응형

댓글