Jenkins는 어플리케이션의 테스트, 빌드, 배포의 과정을 자동화할 수 있게 해주는 도구입니다.
그동안 프로젝트를 진행하면서 매번 직접 VM에 접속하고 직접 어플리케이션을 배포하는 과정이 번거롭다고 느꼈고, 지난 프로젝트에서 공통팀에서 구성한 빌드 파이프라인을 유용하게 사용한 경험이 있었기에 개인이나 회사 프로젝트를 진행할 때 직접 이 과정들을 구성하고 사용하고 싶어 공부하게 되었습니다.
젠킨스 설치
젠킨스의 설치 방법은 크게 3가지가 있습니다.
- war
- msi 설치 (윈도우)
- docker 이미지
https://www.jenkins.io/download/
Download and deploy
Jenkins – an open source automation server which enables developers around the world to reliably build, test, and deploy their software
www.jenkins.io

저는 윈도우 환경이지만 나중에 클라우드 docker 환경에서 진행할 것이기 때문에 docker 이미지를 받아 진행했습니다.

처음에는 JDK 17 버전을 다운로드 받았지만 내년 3월에 지원 종료 예정이라는 안내 문구가 나왔습니다.
그래서 JDK 21 버전으로 다시 다운로드 받기로 했습니다.
docker pull jenkins/jenkins:lts-jdk21
docker run -p 8080:8080 --name=jenkins jenkins/jenkins:lts-jdk21
젠킨스 도커 이미지를 다운로드하고 컨테이너를 실행시킵니다.
젠킨스의 기본 동작 포트는 8080이므로 호스트의 8080 포트와 연결시킵니다.

localhost:8080으로 접속해보면 젠킨스의 첫 화면이 반기는 것을 볼 수 있습니다.
그런데 비밀번호를 설정한 적이 없는데 비밀번호를 입력하라고 합니다.
잘 읽어보면 초기 비밀번호를 위 위치에 들어가 확인하라고 합니다.
docker exec -it jenkins /bin/bash
접속을 했으면 비밀번호를 확인해봅시다.
cat /var/jenkins_home/secrets/initialAdminPassword

비밀번호를 입력하면 다음 화면으로 넘어가게 됩니다.

이번에는 추천 플러그인 설치할 것인지 직접 선택해서 설치할 것인지 선택하는 화면이 나왔습니다.
젠킨스에 부가적인 기능들을 추가해주는 것이 플러그인인데 필요한 것만 설치하면 충분할테지만 일단 처음이니 추천해주는 것이 무엇인지 확인해보겠습니다.

우선 Git과 연동하여 사용할 것이기 때문에 Git 플러그인은 필요하고, 테스트용 어플리케이션이 스프링부트인데 빌드 도구가 Gradle이므로 Gradle 플러그인이 필요합니다.
추천 설치를 선택했기 때문에 다른 추천 플러그인도 같이 설치가 되고 있습니다.

관리자 계정도 생성해줍니다.

젠킨스 접속 URL 설정 화면입니다. 이 설정을 바꾸게 된다면 현재는 docker 컨테이너에서 실행되고 있기 때문에 포트 등의 호스트와의 연결 설정을 다시 해야 합니다.

이제 모든 초기 설정을 완료했습니다.

젠킨스의 메인 화면입니다.
아직 아무런 빌드 설정을 해주지 않았기 때문에 딱히 있는 것은 없습니다.
Plugins 확인

일단 우측 상단 톱니바퀴를 누르고 아까 설치한 플러그인을 확인해보겠습니다.
Plugins에 들어가면 플러그인 추가, 삭제 등의 관리를 할 수 있습니다.

아까 설치했던 플러그인들이 있는 것을 확인할 수 있습니다.
저의 경우 Ant는 사용할 일이 없으니 이럴 경우 비활성화하거나 삭제할 수 있습니다.
Tools 설정

다시 설정으로 돌아와서 Tools에 들어가 보겠습니다.

여기서는 젠킨스가 사용할 도구들의 설정을 할 수 있습니다.
JDK와 Gradle등이 설치된 디렉토리를 지정하거나 자동으로 다운로드 받도록 할 수 있습니다.

Gradle이 설치되어 있지 않다면 install automatically를 선택하여 자동으로 다운로드하도록 설정할 수 있습니다.
하지만 이미 Gradle이 설치되어 있다면 GRADLE_HOME을 지정하여 해당 도구를 사용하도록 설정할 수도 있습니다.
저는 docker 이미지로 젠킨스만 설치한 상태라 일일이 모두 다운로드 지정하기에는 번거로울 것 같아 다음 게시글에서는 Dockerfile을 따로 만들어 처음부터 설치된 상태에서 실행되도록 변경해보겠습니다.
===== 추가 =====
VM 성능 이슈로 docker 환경에서 직접 설치형으로 변경하였습니다.
혹시 모르니 기존에 작성했던 Ubuntu 기준으로 작성한 Dockerfile 남겨놓겠습니다.
FROM jenkins/jenkins:lts-jdk21
# 설치용 계정
USER root
# 설치 후 .deb 패키지 캐시 및 apt 인덱스 삭제
RUN apt-get update && \
apt-get install -y git curl unzip openjdk-21-jdk && \
apt-get clean && rm -rf /var/lib/apt/lists/*
ENV GRADLE_VERSION=8.14.3
ENV GRADLE_HOME=/opt/gradle/gradle-${GRADLE_VERSION}
ENV PATH=${GRADLE_HOME}/bin:${PATH}
RUN mkdir -p /opt/gradle && \
curl -fsSL https://services.gradle.org/distributions/gradle-${GRADLE_VERSION}-bin.zip -o gradle.zip && \
unzip gradle.zip -d /opt/gradle && \
rm gradle.zip
RUN chown -R jenkins:jenkins /opt/gradle
# 젠킨스 계정으로 변경
USER jenkins
EXPOSE 8080
EXPOSE 50000
다음 게시글
https://megamaker.tistory.com/427
[Jenkins] 2. Github Webhook 연결하기
지난 게시글 https://megamaker.tistory.com/426 [Jenkins] 1. Jenkins 설치 및 초기 설정하기Jenkins는 어플리케이션의 테스트, 빌드, 배포의 과정을 자동화할 수 있게 해주는 도구입니다.그동안 프로젝트를 진행
megamaker.tistory.com
'공부 > 기타' 카테고리의 다른 글
| [Jenkins] 로그 깨짐 문제 수정 (0) | 2026.01.07 |
|---|---|
| [Jenkins] 2. Github Webhook 연결하기 (0) | 2025.11.09 |
| [Spring Session Data Redis] 세션 ID로 직접 세션 정보 가져오기 (근데 이제 뭔가 깨지는...) (0) | 2025.08.15 |
| [HTTPS] 하나의 IP에서 여러 도메인 HTTPS 처리하기 (0) | 2024.11.18 |
| [Git] 잔디 안 심어지는 문제 해결하기 (0) | 2024.10.09 |