[Docker] Jenkins 기본 셋업

[Docker] Jenkins 기본 셋업

안녕하세요? 정리하는 개발자 워니즈입니다. 지난시간에 Docker 를 사용하여 Jenkins 컨테이너를 올려보는 내용까지 정리를 했습니다. 오늘은 Jenkins 의 기본 셋업에 대해서 알아보겠습니다.

Jenkins 도커로 실행하기(1/3)
Jenkins 기본 셋업(Docker 내부에서 필요한 툴 설치)(2/3)
Jenkins 파이프라인 사용법(3/3)

  • Jenkins 글로벌 Tools
  • Jenkins 필수 플러그인

1. Jenkins 글로벌 Tools

젠킨스에서는 JDK, MAVEN, NODEJS, GIT, GRADLE 등 다양한 도구들을 글로벌하게 셋팅하고 각 Job 들에서 호출해서 사용 할 수 있습니다. 마치 공용 도구함을 만들어서 망치, 못, 드릴 등을 넣어두고 다양한 곳에서 쓰이고 있다고 보면 됩니다.

필자는 아래의 도구들을 설치했습니다.

  • openjdk
  • maven
  • nodejs + npm
  • git
  • gradle

우선 글로벌 툴을 셋팅하는 부분은 젠킨스 관리 > 글로벌 도구 설정에서 볼 수 있습니다.

처음 보게 되는 화면은 jdk, maven 정도의 설정 밖에 없습니다. 이는 아직 연결 시켜주는 플러그인들이 설치 되어 있지 않기 때문입니다. 우선 있는대로, jdk, maven 을 셋팅해봅니다.

  1. jdk 설정

docker로 jenkins를 올리게되면, 기본적으로 openjdk가 설치 되어있습니다.

root@1b011b567397:/# java -version
openjdk version "1.8.0_171"
OpenJDK Runtime Environment (build 1.8.0_171-8u171-b11-1~deb9u1-b11)
OpenJDK 64-Bit Server VM (build 25.171-b11, mixed mode)

따라서, jdk는 기본 설정에 /docker-java-home path만 입력 해주면됩니다.

  1. maven

메이븐 부터는 개별적으로 컨테이너 내부에 설치를 해줘야 합니다.

docker container에 접속하여 다음을 입력합니다.

#docker container 접속
docker exec -it jenkins /bin/bash

#maven 설치
apt-get update
apt-get install maven

#설치 후 로그 확인
.
.
update-alternatives: using /usr/share/maven/bin/mvn to provide /usr/bin/mvn (mvn) in auto mode

maven은 기본 설정에 /usr/share/maven path를 입력해주면 됩니다

  1. Node.js

우분투 16.04의 패키지 저장소에 Node.js가 기본으로 들어가져 있습니다. 이 글을 쓰는 현 시점에 v4.2.6 버전이 저장소에 올려져있습니다.

apt 패키지 매니저를 통해 손쉽게 설치할 수 있습니다.

#nodejs 설치
sudo apt-get update
sudo apt-get install nodejs

#설치 후 로그 확인
.
.
update-alternatives: using /usr/bin/nodejs to provide /usr/bin/js (js) in auto mode

이후에 npm 설치를 진행하려 하지만, 에러가 발생합니다.

#npm 설치
sudo apt-get install npm

#에러 발생
E: Unable to locate package npm

A Node.js package is also available in the official repo for Debian Sid (unstable), Jessie (testing) and Wheezy (wheezy-backports) as “nodejs”. It only installs a nodejs binary.

Node.js 에서는 특정 버전 이후에는 binary 로 설치할 것을 권장학 있습니다.

sudo apt install curl
curl -sL https://deb.nodesource.com/setup_6.x | sudo bash -
sudo apt-get install -y nodejs
sudo apt-get install -y npm

다른 패키지와의 충돌을 방지하기 위해, 우분투 저장소의 Node.js는 node 대신 nodejs 명령어를 사용합니다.

다음 명령어로 정상적으로 Node.js가 설치되었는 지 확인할 수 있습니다.

nodejs는 기본 설정에 /usr/bin path 를 입력해줍니다.

2. Jenkins 필수 플러그인

제목을 필수 플러그인라고 했지만, 사실 필자가 주로 사용하는 플러그인이라고 보면된다. 추천하는 플러그인이고 독자분의 생각에 따라 사용유무를 결정하면 됩니다.

  • Build Name and Description Setter
  • Dynamic Extended Choice Parameter Plug-In
  • Extended Choice Parameter
  • Extensible Choice Parameter plugin
  • Last Changes
  • File Operations Plugin
  • Build Timeout
  • Workspace Cleanup Plugin
  • NodeJS
  • Maven Integration
  • Git
  • Gradle

상위의 플러그인 중에 소개할만한 내용에 대해서만 정리해보았습니다.

  1. Build Name and Description Setter

job에서 빌드를 수행하면 기본적으로 $BUILD_NUMBER라고해서 숫자로 BUILD JOB의 name 이 결정됩니다. 가독성도 떨어지고 숫자기때문에 정확하게 추적하기가 어렵습니다. 그래서 필자는 보통 job name + job 수행시간으로 기록을 합니다. BUILD NAME 셋팅을 위한 플러그인이라고 보면됩니다.

BUILD_DATE에 대한 포맷 지정을 위해서 아래의 내용을 빌드 환경탭에서 입력해줍니다.

입력하고 나면, 좀더 가독성있고 추적하기도 편리합니다.

  1. Extensible Choice Parameter plugin

JOB은 보통 파라미터 셋팅에 따라서 다양한 업무를 수행합니다. 따라서 파라미터를 어떻게 넘기느냐가 JOB수행 여부에 중요한 요소입니다. 필자가 속한 프로젝트에서는 수많은 서버에서 반복적인 업무를 하다보니, 파라미터를 여러개 넘겨줘야 합니다.

이 플러그인은 multi choice, single choice, file choice 등 다양한 기능들을 지원합니다.

  • choice parameter

초이스는 한개의 싱글 select만 가능합니다.

위와 같이 test1, test2, test3을 고를 수 있게 입력을 합니다.

  • Multi select choice

다양하게 선택을 하게끔 해주는 기능을 구현하기 위해서는 extensible choice parameter 플러그인을 이용합니다.

위와 같이 parameter type을 multi 로 지정을 한뒤 Delimeter는 ,로 지정을 하여 파라미터를 나누어줍니다.

  1. Last Changes

젠킨스는 형상관리 레포지토리에 있는 소스를 가져와서 빌드를 수행하고 테스트를 합니다. 그럼 이전 버전과의 차이를 알고 싶을때는 이 플러그인이 유용합니다.

3.마치며

젠킨스의 글로벌 도구 설정과 필수 플러그인에 대해서 정리해보았습니다. 젠킨스는 확실히 역사도 길고 다양한 플러그인으로 사용성을 높이고 있습니다. 필자또한 젠킨스를 알게 되면서 반복 단순한 업무들은 모두 job으로 구성하여 한번의 수행으로 해결하고 있습니다.

다음시간에는 젠킨스 파이프라인 구성에 대해서 알아보겠습니다.

워니즈 블로그
워니즈 깃헙

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다