네이버 클라우드 캠프/Spring Boot & React

[Jenkins] 젠킨스 설정하기(2)

graph-dev 2023. 8. 10. 15:54
728x90

Old Jenkins logo

 

젠킨스 실습

이전 글을 기초로, 실습을 진행해보겠습니다. 서버를 생성하고, 다시 접속하여 도커 설치를 끝낸 뒤라고 가정하겠습니다. 자세한 내용은 아래 글을 참고해서 진행하신 뒤에 실습 진행하시면 됩니다.

https://graph-dev.tistory.com/74

 

[Docker] 도커로 앱 배포하기 (1) with Ncloud

리눅스 서버 생성 이번에는 설치부터 배포까지 실습해보겠습니다. 먼저 리눅스 서버(ubuntu)를 생성해두고 시작하시면 됩니다. 필요한 경우, 제가 작성한 글을 참고하셔서 서버를 생성하는 것부

graph-dev.tistory.com

 

젠킨스와 게시판 서버 연동을 위한 시나리오를 다시 한번 확인해보고 진행하겠습니다.

 

젠킨스와 스프링 부트 연동 시나리오

 

먼저 서버를 두 개 생성합니다. 저는 네이버 클라우드 플랫폼을 사용해서 만들겠습니다. 하나는 Jenkins를 위한 서버이고, 나머지는 Springboot를 위한 서버를 생성합니다. 네이버 클라우드를 활용한 서버와 관련된 내용은 아래 글을 참고해주세요.

https://graph-dev.tistory.com/41

 

[Ncloud] 나만의 리눅스 서버 만들기

네이버 클라우드로 Linux 서버를 만들어보겠습니다. 리눅스에 대해 먼저 살펴봐야겠죠? Linux: "Just For Fun!" 재미로 시작한 리눅스 리눅스는 헬싱키 대학 리누스 토발즈가 만들었습니다. 당시 자율

graph-dev.tistory.com

 

Jenkins 서버 생성 (10.0.1.101)

이름은 graph-jenkins로 정하고 OS는 ubuntu 20.04로 설정했습니다. 그 외에 나머지는 아래와 같이 설정합니다. 추가로 각 서버별로 외부 접속을 위해 공인 아이피 신청해야 합니다.

 

 

 

 

Spring boot 서버 생성 (10.0.1.102)

그 다음에 Spring boot 서버를 생성합니다. 아래와 같이 설정하고 ubuntu 20.04로 설정했습니다.

 

 

이 두 가지 서버가 생성이 완료되면, 운영중으로 표기됩니다. 그러면 이제 두 서버에 각각 터미널을 하나씩 켜서 접속합니다.

 

서버 완료 후 상태 확인

 

접속을 위한 코드는 다음과 같습니다. (포트번호 생략 가능)

ssh root@[공인 아이피 주소]

 

Jenkins 서버 접속

먼저 graph-jenkins 서버에 접속하겠습니다.

 

jenkins 서버 접속

 

 

 그 다음 젠킨스에 필요한 명령어를 활용해서 도커와 연동을 수행합니다. 여기서 제일 먼저 해야할 일은 도커 명령어를 사용하기 위해 최소한으로 도커를 설치하는 것입니다. 아래 글을 참고했습니다.

 

[Docker] 도커 시작하기

도커(Docker) 도커는 컨테이너 기반의 가상화 플랫폼입니다. 클라우드 서버의 관리, CI/CD, DevOps 등의 기술을 편하게 사용하도록 해줍니다. 도커에는 컨테이너(Container)라는 개념이 있습니다. 이는

graph-dev.tistory.com

 

도커 설치

sudo apt-get update
sudo apt-get install curl
curl https://get.docker.com > docker-install.sh
chmod 755 docker-install.sh
sudo ./docker-install.sh # or sudo sh docker-install.sh

 

 

 그 다음에 아래 글에서 코드를 참고해서 실습해보겠습니다.

 

[Jenkins] 젠킨스 설정하기(1)

Jenkins 젠킨스 젠킨스는 CI(Continuous Integration) / CD (Continuous Delivery)를 지원하는 미들웨어 입니다. 즉, 지속적인 통합과 배포를 지원하는데 사용합니다. 개발자가 git, svn 등에 변경사항을 커밋하면 je

graph-dev.tistory.com

 

 

네트워크 브릿지 생성

 먼저 네트워크 브릿지를 생성합니다. 아래 jenkins NAME을 가진 네트워크 bridge가 생성되었음을 알 수 있습니다.

 

jenkins bridge 생성

 

젠킨스 이미지 생성

 그 다음 젠킨스 이미지를 가져오겠습니다. docker image pull 명령어를 사용하며, jenkins는 LTS-JDK17 버전으로 선택해서 이미지를 가져옵니다. 참고로, Long-Term Support (LTS)은 가장 안정적으로 지원하는 버전입니다.

 

jenkins image 생성

 

 

도커 이미지 생성

 

먼저 jenkins 경로를 만들고, 그 경로로 이동해서 install-docker.sh 라는 설치 스크립트를 작성합니다.

 

jenkins 경로 생성 후 이동하고 스크립트 작성

 

쉘 스크립트도 아래와 같이 작성해주었습니다.

 

도커 설치파일 스크립트 작성

 

작성 후, :wq 입력해서 저장 후에 다시 서버로 빠져나옵니다. 그 다음은 Dockerfile을 작성하겠습니다. 작성 완료 후 저장하고 나옵니다.

vi Dockerfile

Dockerfile 내용

 

 

이제 도커 이미지를 생성하는데, 도커 허브(docker hub)라는 곳으로 가서 계정을 생성합니다.

https://hub.docker.com

 

Docker Hub Container Image Library | App Containerization

Deliver your business through Docker Hub Package and publish apps and plugins as containers in Docker Hub for easy download and deployment by millions of Docker users worldwide.

hub.docker.com

 

계정을 생성하면, 해당 계정 이름을 저장해두고 명령어를 사용해서 이미지를 생성합니다.

docker build -t [도커허브 계정]/jenkins:1.1 .

도커이미지 생성

 

버전을 1.1로 정하고 이미지를 생성했습니다. 이제 도커 허브(Docker Hub)에 로그인해서 생성한 이미지를 배포하겠습니다.

 

도커 허브 로그인
도커 허브에 이미지 배포

 

 이제 도커 허브 사이트로 들어가서, 로그인 후 배포된 이미지를 검색해봅니다. [도커 허브 계정]/jenkins: 1.1 이미지가 잘 등록되어 있는 것을 확인할 수 있습니다.

 

도커허브 사이트에서 배포된 이미지 확인

 

 

 이렇게 등록된 이미지를 활용해서 jenkins 컨테이너를 생성하고 실행해보겠습니다. 이 때 사용하는 명령어는 docker run이 되겠죠?

 

docker run 결과 확인

 

이제 젠킨스 컨테이너가 잘 생성되었습니다. 젠킨스로 접속하겠습니다.

 

웹 사이트에 다음과 같이 입력하겠습니다.

http://[jenkins 서버의 공인아이피]:8080

jenkins 최초 화면

접속이 잘 이루어지고 최초 "접속"을 위한 비밀번호를 확인 후 입력해서 잘 저장한 상태로 넘어갑니다. 이 비밀번호는 도커의 로그 기록을 통해 확인할 수 있습니다.

docker logs docker-jenkins

 

그걸 입력하면 로그인이 되며 다음 화면으로 넘어갑니다.

 

젠킨스 설치

 

 제안된 플러그인만 선택해서 설치하겠습니다. 그러면 자동으로 설치가 아래와 같이 진행됩니다.

 

jenkins 설치 중 화면

 

 설치가 완료되면 최초 Admin 사용자를 생성합니다. 

 

최초 Admin 사용자 계정 생성

 

생성 후에는 Configuration 설정에서 Jenkins URL을 최종 확정하고, 따로 입력할 필요 없이 자동으로 입력됩니다. 확인했다면, Save and Finish를 눌러서 완료합니다.

 

마지막 단계로 Jenkins URL 설정

 

이제 젠킨스로 접속합니다. 앞으로 접근하려면 위의 Jenkins URL을 웹 주소창에 입력하면 됩니다. 로그인이 되면 아래와 같이 화면이 나타납니다.

 

Jenkins 로그인 후 메인 화면

 

이제 젠킨스를 사용할 준비가 다 되었습니다. 나머지 추가적인 설정도 진행하겠습니다.

 

Jenkins 관리 > Tools로 들어가서 JDK 섹션에 있는 Add JDK, Gradle 섹션에서 Add Gradle를 누릅니다. 각각 아래와 같이 입력해서 등록하겠습니다. JDK는 OpenJDK-17로 하고, Gradle은 8.1.1 버전으로 선택해서 진행합니다. 다 작성했으면 Apply > Save 순으로 입력해서 저장합니다.

 

JDK와 Gradle 버전 정의

 

 다음으로 nodeJS 설치 정보를 입력하고자 플러그인을 받아야합니다. Jenkins 관리 > Plugins > Available plugins에서 nodejs를 검색합니다. 그 다음 Install without restart 버튼을 누르겠습니다.

 

install nodejs

 

 

 플러그인 설치 완료 후 바로 메인 페이지로 이동해서, Jenkins 관리 > Tools > Add NodeJS가 생겼습니다. 이 버튼을 눌러서 NodeJS 설치 정보를 입력합니다. 저는 NodeJS 18.16.0 버전을 설치할 것입니다. 아래와 같이 입력해줍니다.

 

node js 설치 정보 입력

 

 입력 후에는 Apply > Save를 눌러서 적용하겠습니다.

 

 

이제 다시 Jenkins container로 접속해서, JDK를 설치하겠습니다. 중요한 것은 관리자 권한을 가진 유저로 컨테이너에 접속해야 합니다. 명령어는 다음과 같습니다.

# 관리자 권한으로 젠킨스 컨테이너 접속
docker container exec -itu 0 docker-jenkins /bin/bash

# 접속 후 전체 패키지 업데이트
apt-get update

# JDK 설치
apt-get install openjdk-17-jdk -y

jdk 설치

 

잘 설치되었는지 확인합니다.

# JDK 파일 확인
cd /usr/lib/jvm
ls

jdk 파일 확인

 

잘 설치된 것을 확인할 수 있습니다.

 

나머지 Spring boot도 접속만 해주고 마무리하겠습니다. ssh 명령어로 잘 접속되었고 도커 명령어를 위해 기본적인 설치만 수행합니다.

 

spring boot 서버 접속

 

아래 명령어를 입력해서 설치해주면 spring boot 서버에서도 docker 설치가 됩니다.

sudo apt-get update
sudo apt-get install curl
curl https://get.docker.com > docker-install.sh
chmod 755 docker-install.sh
sudo ./docker-install.sh

spring boot 서버에 도커 설치

 

이제 spring boot와 jenkins 서버를 연동할 준비를 마쳤습니다. 다음 콘텐츠에서는 게시판 서버, mysql, object storage 서비스를 활용해서 클라우드 DB 서버에 데이터를 업로드하는 작업을 진행해보겠습니다.