Dazzling 개발 노트

[CI/CD] 0. CI/CD 구현하기 / Ec2 인스턴스 생성 및 Jenkins 서버 세팅 본문

DevOps/CICD

[CI/CD] 0. CI/CD 구현하기 / Ec2 인스턴스 생성 및 Jenkins 서버 세팅

dj._.dazzling 2023. 12. 22. 16:31

 

CI/CD 구현하는 과정을 직접 해보며 정리했다.

각 과정마다 게시글을 나누어 작성했으니 만약 이해가 가지 않을땐 앞, 뒤 게시글을 참고하기 바란다.

 

CI/CD를 구현하는 도구는 다양하지만, 필자는 Jenkins와 GitHub, Docker를 사용했다.

Jenkins - GitHub - Docker(WAS-SpringBoot)

 

여기서 Jenkins는 서버에 바로 배포하고

WAS는 docker를 통해 컨테이너로 배포한다.

 

사용한 서비스와 기술은 다음과 같다.

 

AWS Ec2 (2개)

Jenkins

GitHub

Docker

Slack

 

SpringBoot

Gradle

Java

 


인스턴스 생성하기

AWS에 접속하여 로그인한다.

EC2 > 인스턴스 > 인스턴스 시작

 

인스턴스의 이름 입력, OS 선택, 인스턴스 유형 선택

나는 Ubuntu를 선택했다.

인스턴스 유형은 프리 티어 사용이 가능한 t2.micro를 선택했다.

 

키 페어는 기존에 생성한 것을 쓸 수도 있고, 새 키 페어 생성을 클릭해 새로 생성할 수도 있다.

나는 사전에 생성한 키 페어를 사용했다.

새 키 페어 생성하는 법은 추후에 포스팅한다.

 

네트워크 설정 또한 사전에 설정해 둔 보안 그룹을 선택했다.

보안 그룹 설정하는 법 또한 추후에 포스팅하도록 하겠다.

 

스토리지 구성은 기본값을 그대로 설정했다.

 

설정이 끝났다면 인스턴스 시작을 클릭하고 인스턴스가 생성되는 것을 기다린다.

 

인스턴스의 생성이 완료되면 다음과 같이 퍼블릭 IP 주소를 확인할 수 있다.

 


Jenkins 서버 설치 세팅

1. 터미널에서 pem key가 있는 경로로 이동한다.

2. ssh 명령어를 통해 ec2에 접속한다.

 

3. java JDK를 설치한다.

sudo apt update
sudo apt install openjdk-17-jdk

 

4. Jenkins를 설치한다.

curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key | sudo tee \
  /usr/share/keyrings/jenkins-keyring.asc > /dev/null

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

sudo apt-get update

sudo apt-get install jenkins

sudo systemctl status jenkins

 

5. Docker를 설치한다.

Jenkins 서버는 docker를 사용하지 않고 띄우지만, jenkins가 추후에 다른 서버에서 docker를 띄우는 과정이 있어 jenkins 서버에도 docker를 설치한다.

sudo apt-get update

sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

sudo apt-get update

sudo apt-get install docker-ce docker-ce-cli containerd.io

sudo systemctl status docker

 

6. Jenkins가 설치되었는지 확인하기 위해 ip:8080으로 접속한다.

다음과 같은 화면이 표출되면 잘 설치된 것이다.

 

초기 password를 확인하기 위해 cat 명령어를 사용해 password를 확인한다.

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

 

값을 확인 후 입력, continue 버튼을 누르면 다음과 같은 화면이 나온다. 클릭하고 설정되는 것을 기다린다.

 

설정이 완료되면 다음과 같은 화면이 나온다. 정보를 입력하여 save and continue를 클릭한다.

계정명과 암호는 추후에 Jenkins 서버에 로그인하기 위해 필요한 계정이다.

원하는대로 설정하고 잘 기억한다.

 

Jenkins Url을 확인하고 Save and Finish를 클릭한다.

 

Jenkins 설정이 완료되었다.

 

 

참고

https://velog.io/@hmyanghm/AWS-EC2%EC%97%90-Jenkins-%EC%84%9C%EB%B2%84-%EA%B5%AC%EC%B6%95#---jenkins-%EC%84%A4%EC%A0%95-%EC%99%84%EB%A3%8C-