본문 바로가기
IT/형상관리

Jenkins 로 빌드 및 배포 자동화 구성하기

by blogger 2022. 5. 29.

Jenkins 를 설치한다.

설치는 컨테이너로 하며, 다음과 같이 컴포즈 파일을 작성해주고 서비스할 포트를 매핑한다.

version: "3"

services:
  jenkins:
    image: jenkins/jenkins:lts-jdk11
    container_name: jenkins
    privileged: true
    #restart: always
    ports:
      - 15000:8080
    environment:
      - TZ=Asia/Seoul
      - JAVA_OPTS="-Duser.timezone=Asia/Seoul -Xmx1024m -Xms1024m -XX:+UseG1GC -XX:+AlwaysPreTouch -XX:+UseStringDeduplication -XX:+ParallelRefProcEnabled -XX:+DisableExplicitGC"
    volumes:
      #- ./var/run/docker.sock:/var/run/docker.sock
      - ./data:/var/jenkins_home
      #- /etc/localtime:/etc/localtime:ro

 

이때 마운트 하는 디렉토리의 권한 설정을 잘 해주어야 한다.

# 일반 사용자 계정일 경우
mkdir data
chown -R userName:docker data

# root 사용자일 경우
mkdir data
chown -R docker:root data

 

컨테이너를 실행하고 잠시 기다리면 컨테이너 로그에 설치 진행을 위한 임시 비밀번호가 출력된다.

 

출력된 비밀번호를 복사한 후, 브라우저를 열어 Jenkins 서비스 페이지에 접속한다.

본 예시에서는 http://127.0.0.1:15000

 

복사한 패스워드를 입력 후 진행하면 Jenkins Customize 화면이 보여지는데, 이때 Jenkins 가 제안하는 플러그인을 설치하도록 하자. 만일 Jenkins 사용에 익숙한 사용자라면 커스터마이징을 통해 플러그인 설정을 완료해 준다.

 

이후 한동안 jenknis 가 플러그인을 설치하게 된다.

 

 

 

 

 

설치가 완료되었으나, 플러그인들이 제대로 설치되지 않았다면..

 

 

Jenkins 컨테이너 쉘에서 직접 CLI 로 설치를 진행해보면 원인 파악에 도움이 된다.

 

필자가 설치를 진행하는 동안 겪은 플러그인 실패 원인은 주로 다음의 "NoHttpResponseException" 이었다.

스택오퍼플로우를 참조하면 "오래된, 어쩔 수 없는, 그러나 여러번 시도하다 보면 되는" 버그라고 한다.

https://stackoverflow.com/questions/55624675/how-to-fix-nohttpresponseexception-when-running-wiremock-on-jenkins

 

How to fix "NoHttpResponseException" when running Wiremock on jenkins?

I start a wiremock server in a integration test. The IT pass in my local BUT some case failed in jenkins server, the error is localhost:8089 failed to respond; nested exception is org.apache.http.

stackoverflow.com

다음 명령어를 통해 설치가 실패한 플러그인을 설치가 될 때까지 터미널창에서 설치를 시도한다.

jenkins-plugin-cli --verbose --plugins ${플러그인1} ${플러그인2}

 

만일 기존에 사용하던 Jenkins 서버가 있고, 해당 서버에서 사용중이던 플러그인을 그대로 사용하고 싶다면, jenkins_home 의 plugins 디렉터리 내용을 복사해 주고 서버를 재기동 한다.

 

Maven 빌드를 사용하는 경우, Global Tool Configuration 메뉴에 진입하여 apache download 기반 maven 설치를 진행해주도록 하자.