이 글에서는 Ubuntu EC2 인스턴스에 Jenkins를 설치하는 방법을 소개합니다. 이어지는 글에서는 Jenkins를 통해 배포 파이프라인을 구축하는 방법을 소개할 예정입니다.
올해 초 DND
사이드 프로젝트를 진행하면서 Jenkins를 구축한 내용을 기록하려고 한다!
사이드 프로젝트에서 나는 React App과, Node Backedn App을 배포하는 프로세스를 구축했다.
실제 운영했던 Jenkins 캡쳐
나는 Jenkins를 회사에서 처음으로 접했는데, 사내 배포 시스템을 누군가가 Jenkins로 미리 잘 만들어두셔서 사용자의 입장에서 편리하게 사용만 하고 있었다.
사이드 프로젝트를 이왕 하기로 한거, 다른 개발자 분들이 개발에만 집중하고, 배포에 신경쓰지 않도록 도와주고 싶어서 Jenkins를 직접 구축해서 배포프로세스를 제공하고자 했다.
젠킨스는 소프트웨어 개발 시 지속적 통합 서비스를 제공하는 툴이다. 다수의 개발자들이 하나의 프로그램을 개발할 때 버전 충돌을 방지하기 위해 각자 작업한 내용을 공유 영역에 있는 Git등의 저장소에 빈번히 업로드함으로써 지속적 통합이 가능하도록 해 준다. MIT 라이선스를 따른다.
라고 위키백과 머릿말에 나와있다.
쉽게 생각해서 지속적 통합/개발을 쉽게 할 수 있도록 도와주는 오픈소스 기반의 툴이며, 자신의 서버에 설치해서 사용가능하다 라고 생각하면 된다!
github action
을 자신의 서버에서 구동한다고 생각하면 쉽겠다!
EC2 인스턴스는 Ubuntu 18.04 LTS / Ubuntu 20.04 LTS 기준입니다.
Jenkins 설치는 도커 이미지를 이용하는 방법과, 직접 설치하는 방법이 있는데, 나는 EC2 인스턴스에 직접 설치하는 방향으로 진행했다.
우선 EC2 인스턴스에 접속한다.
Jenkins는 Java 8과 호환되며, EC2 Ubuntu 인스턴스는 디폴트로 자바가 깔려있지 않다. 따라서 다음과 같이 명령어를 입력한다.
sudo apt-get update
sudo apt install openjdk-8-jdk openjdk-8-jre
로그가 찍히면서 설치중...
이후 java -version
을 입력해 올바르게 설치되었는지 확인한다.
그 다음 apt 패키지 매니저를 통해 jenkins를 설치하기 위해 레포지토리를 추가해주어야 하는데, 다음과 같이 진행한다.
vim, nano 등의 텍스트 편집기로 레포지토리 리스트를 다음과 같이 수정한다.
sudo nano /etc/apt/sources.list
맨 마지막 줄에 다음을 추가한다
deb https://pkg.jenkins.io/debian-stable binary/
이후 다음 명령어를 통해 apt를 업데이트한다.
sudo apt-get update
이 때 다음과 같은 오류가 발생할 것이다.
W: GPG error: https://pkg.jenkins.io/debian-stable binary/
Release: The following signatures couldn't be verified
because the public key is not available: NO_PUBKEY <퍼블릭키>
E: The repository 'https://pkg.jenkins.io/debian-stable binary/
Release' is not signed.
당황하지 말고 sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys <퍼블릭키>
을 입력한다.
<퍼블릭키>는 스크린샷에서 빨간색으로 가린 부분이다.
다시 sudo apt-get update
를 진행한다.
업데이트가 완료되면 다음 명령어를 입력하여 Jenkins를 설치한다.
sudo apt-get install -y jenkins
설치가 완료되고 나면 ps -ef | grep jenkins
를 통해 젠킨스가 프로세스로 떴는지 확인해본다.
위 스크린샷의 경우, jenkins가 httpPort 8080번으로 잘 떴다고 나온다.
실제로 Jenkins에 접속하기 위해서는 EC2 인바운드 포트를 열어주어야 한다.
위 보안그룹을 클릭한다.
여기서 아래쪽의 인바운드 규칙을 편집한다.
유형은 사용자 지정 TCP, 포트범위는 8080, 소스는 위치무관으로 정하고 규칙저장을 클릭한다.
저장한 이후, 자신의 EC2 퍼블릭 IP:8080을 브라우저를 통해 접속한다.
다음과 같은 화면이 뜨면 성공이다.
Unlock Jenkins에 나와있는 내용대로 /var/lib/jenkins/secrets/initialAdminPassword
를 확인해 입력하면 된다.
cat /var/lib/jenkins/secrets/initialAdminPassword
ec2 인스턴스 터미널에 위와 같이 입력한다.
위 명령어를 통해 확인한 초기 비밀번호를 jenkins에 입력해준다.
입력하고 나면 다음과 같은 화면이 나오는데, 왼쪽 Install suggested plugins를 선택하자!
오래 걸리니 밖에 나가서 커피 한잔 사오면 좋을 듯 하다. ☕️