1. Introduction

  • 저번 과정에서 Jenkins를 띄울 EC2 인스턴스 서버를 만드는 것 까지 수행했었다. 이번 파트에서는 Jenkins를 EC2 인스턴스에 설치하고 설정을 진행하는 부분을 진행해 볼 것이다.
주의!

필자의 현재 진행 환경이 AWS에서 Vultr로 변경되었음을 알려 드립니다. 다만 진행하는 모든 과정을 AWS에서 이미 한 번 해보았고 해당 과정을 완벽하게 그대로 진행했음을 알려 드립니다.

글을 작성하는 지금 실행 환경은 다음과 같습니다.
Ubuntu LTS 24.04

 

2. Swap Memory 설정

  • 우리는 Jenkins를 EC2에 다이렉트로 설치하지 않고 Docker를 사용하여 설치할 것이다. 하지만 Docker나 Jenkins 모두 메모리가 충분하지 않으면 제대로 동작하지 않는 경우가 많아 HDD용량 일부를 메모리로 가용하는 Swap Memory를 잡아줄 것이다.
  • 먼저 HDD의 용량을 확인한다. 아마 인스턴스를 생성한 후 어떠한 행동도 하지 않았다면 HDD는 용량 그대로 있을 것이다.
df -h
  • 용량을 확인했다면 그 중 swap 메모리로 설정할 용량을 지정한다. 우리는 2GB 정도를 할당할 것이다.
sudo fallocate -l 2G /swapfile
  • 이후 할당한 /swapfile을 사용해 swap memory를 활성화시킨다.
sudo mkswap /swapfile
sudo swapon /swapfile
  • 이후 이 설정이 인스턴스가 재시작되어도 유지가 될 수 있도록 수정한다.
sudo echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
  • 이후 swap memory가 잘 할당되었는지를 확인한다.
free

3. Docker 설치

  • swap memory를 설정했다면 이제 Docker를 설치해야 할 차례이다. 다행이도 Docker 설치는 Docker의 공식 도큐먼트에 잘 나와있으므로 해당 코드를 참고한다.
  • Ubuntu를 기준으로 다음의 코드를 사용한다.
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

#install docker with apt
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

#install hello-world image
sudo docker run hello-world
  • 마지막 hello-world가 설치되었을 때 아래의 사진과 같이 나오면 정상적으로 설치가 된 것이다.

 

4. Jenkins 설치

  • docker에서 Jenkins 이미지를 사용하여 Jenkins를 설치할 것이다. 다음의 명령어를 입력하자.
docker run --name jenkins -d -p 8080:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home jenkins/jenkins:lts
  • jenkins를 docker에서 실행시키며 8080, 50000포트로 들어오는 요청을 jenkins가 받을 수 있도록 포워딩한다. 해당 명령어를 수행하면 jenkins가 설치되게 된다.
  • 이후 https://내 인스턴스 IP:8080으로 접속하게 되면 아래와 같은 화면이 나오게 된다.

  • 맨 처음 Jenkins를 실행하게 되면 admin password를 입력해주어야 한다. 그런데 Jenkins가 docker 내부에서 돌아가므로 docker 내부에 있는 Jenkins에 들어갈 필요가 있다.
  • 다음과 같은 명령어를 실행시키자.
docker exec -it jenkins bash
  • 해당 명령어는 docker 내부에 있는 jenkins 컨테이너의 bash shell을 실행시키는 명령어이다. 즉 jenkins가 돌아가는 컨테이너 내부로 들어온 것이다. 여기에서 다음 명령어를 통해 admin password를 확인할 수 있다.
cat /var/jenkins_home/secret/initialAdminPassword
  • 이후에 해당 패스워드를 입력해주면

  • 젠킨스의 초기 세팅이 나타나게 된다.
  • 여기서는 젠킨스의 초기 플러그인들을 어떻게 세팅할 것인지를 물어보는데 왼쪽을 선택하자. 자주 사용하는 플러그인들을 자동으로 설치해주므로 편하다.더 필요한 게 있다면 이후에 추가적으로 설치도 가능하다.

  • 이렇게 초기 플러그인을 설치하고 나면 Admin User를 설정하는 곳으로 이동한다.

 

  • 이것도 세팅하면 jenkins로 접근할 수 있는 URL 설정이 나온다. 만약 도메인 주소를 가지고 있어서 해당 도메인 주소를 넣고 싶다면 넣어서 세팅해주면 된다. 필자는 도메인이 없기 때문에 그냥 기본 세팅으로 진행했다. 여기까지 진행하면 Jenkins의 대쉬보드로 이동한다.

  • 초록색 삼각형은 메뉴이며 Jenkins 세팅을 할 수 있는 제어판으로 이동이 가능하다.
  • 초록색 원은 Jenkins Pipeline이나 여러 동작중인 내용들을 확인할 수 있는 부분이다. 현재는 아무것도 없기 때문에 새로운 job을 생성하라고 나와 있다.
  • 그대로 진행하면 되지만 그 전에 몇 가지 선행되어야 할 설정들이 존재한다. 초록색 삼각형의 Jenkins 관리 탭으로 들어가자.

  • 여기에선 아까 언급한 것 처럼 Jenkins의 설정들을 관리할 수 있는 제어판이다.
  • 우리는 여기에서 몇 가지 플러그인을 추가적으로 설치할 것이다. Plugins로 들어가자.

  • Plugins로 들어가면 Available Plugins 탭으로 들어가자. 여기에서 우리가 설치할 수 있는 플러그인들을 설치할 수 있다. 우리가 필요한 것은 ssh통신을 열어서 인스턴스간 통신할 수 있는 ssh Agent Plugin과 현재 빌드 단계를 시각화해주는 stage view 플러그인이다.

  • 설치를 진행하면 Jenkins의 기본적인 세팅이 끝난다.

 

마치며

  • 다음 파트에서는 본격적으로 Jenkins의 동작을 정의하고 디버깅하는 과정을 다루어 볼 것이다.
복사했습니다!