Jenkins 설치

CHAN LIM·2024년 12월 14일

DevOps

목록 보기
3/6

Jenkins?

On-premise Java-based CI/CD Tools

  • CI/CD 도구 중, 가장 오래되었다.
  • 그로 인해 매우 다양한 plug-In이 있어 온갖 것에 붙을 수 있다는 장점.
  • 조금 레거시한 기업은 Jenkins를 다수 사용한다.

1. Jenkins 설치 (스탠드얼론)

차례
1. Jenkins가 JVM 위에서 구동하기에, Java를 설치해야한다.
2. Java 설치 후에 Jenkins를 설치한다.
3. 이후 Container 환경으로 설치하는 방법까지 소개한다.


1.1 Java 설치

Java_ubuntu에서 설치

다만, Java의 버전은 11을 더이상 지원하지 않으므로... 17 이상을 설치한다.


1.2 Jenkins 설치

1.2.1 Jenkins의 GPG Key 받기

sudo wget -O /usr/share/keyrings/jenkins-keyring.asc \
  https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key

1.2.2 Jenkins 저장소 정보 저장

echo "deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc]" \
  https://pkg.jenkins.io/debian-stable binary/ | sudo tee \
  /etc/apt/sources.list.d/jenkins.list > /dev/null

1.2.3 APT 저장소를 업데이트하고 jenkins를 설치

sudo apt update
sudo apt install jenkins

1.3 Jenkins 실행

아래의 명령을 입력해 Jenkins를 데몬 프로세스로 만듭니다.

sudo systemctl enable jenkins

그 다음 아래의 명령어로 Jenkins를 실행해봅시다.

sudo systemctl start jenkins

실행한 후, http://<컴퓨터 IP 주소>:8080 주소로 접속하면 아래와 같은 초기화면이 나타납니다.


1.4 Jenkins 설정 및 변경

1.4.1 Port 변경

Jenkins의 기본 포트 번호는 8080번입니다.

다른 서비스와 충돌이 날 수 있으므로 변경 방법을 소개

sudo systemctl edit jenkins

또는

sudo vi /usr/lib/systemd/system/jenkins.service 

해당 설정을 변경하면 Jenkins Port 변경 가능


1.4.2 초기 설정

해당 경로에 비밀번호가 있으므로 파악 후 입력한다.

sudo cat /var/lib/jenkins/secrets/initialAdminPassword

입력 결과

처음이니까 기본 플러그인만 설치 시도 (Install suggested plugins 선택)

설치 중...

관리자 계정을 생성

외부 연결 주소 설정인데, 기본값으로 두고 끝내기

설치 및 설정 완료



2. Jenkins 설치 (Docker)

2.1 Docker In Docker

원리만 간단하게 말하자면, Docker Container 안에 Docker를 설치하여 실행한다는 말이다.

Jenkins를 Docker In Docker(DinD) 환경에서 실행하는 이유는 주로

  • 빌드 환경을 격리하고,
  • 배포 파이프라인에서의 일관성 유지,
  • 그리고 효율적인 CI/CD 파이프라인 구현을 위해서입니다.

2.2 DInD 방식 Jenkins 설치

docker run -d --name jenkins --hostname=jenkins \
                  --restart=on-failure \
                  -e TZ=Asia/Seoul \
                  -p 8080:8080 -p 50000:50000 \
                  -v ${HOME}/practice/key:/key \
                  -v ${HOME}/.jenkins:/var/jenkins_home \
                  -v /var/run/docker.sock:/var/run/docker.sock \
                  --network practice \
                  --user root \
                  jenkins/jenkins:lts-jdk17
  • Jenkins Docker Container 내에서 Docker가 실행 가능하도록 HostDocker환경과 연결한다.
  • 실습용으로 Jenkins Docker ContainerRoot 권한으로 실행
docker exec --user root  -it jenkins apt-get update
docker exec --user root  -it jenkins apt-get install -y docker.io
  • Jenkins Docker Container 내부에 Docker 설치
docker commit jenkins jenkins/jenkins:my-version
  • 지금까지 설정한 것을 향후에도 재사용 가능하도록 Jenkins image로 Commit
docker rm -f jenkins
docker run -d --name jenkins --hostname=jenkins \
                  --restart=on-failure \
                  -e TZ=Asia/Seoul \
                  -p 8080:8080 -p 50000:50000 \
                  -v ${HOME}/practice/key:/key \
                  -v ${HOME}/.jenkins:/var/jenkins_home  \
                  -v /var/run/docker.sock:/var/run/docker.sock \
                  --network practice \
                  --user root \
                  jenkins/jenkins:my-version
  • my-version 으로 Jenkins Docker Container 재시작
profile
클라우드, 데이터, DevOps 엔지니어 지향 || 글보단 사진 지향

0개의 댓글