Jenkins CI/CD Pipeline 구축하기 01. AWS EC2에 Jenkins 서버 구축하기
Install Jenkins on AWS EC2
CI/CD 파이프라인 구축의 첫걸음은 AWS EC2 인스턴스 내부에서 Jenkins를 설치하고 실행하는 것입니다. 이를 위해, Jenkins를 호스팅할 AWS EC2 인스턴스를 먼저 생성합니다. 제가 사용한 EC2 인스턴스는 다음과 같은 사양을 지니고 있습니다:
- OS: Amazon Linux 2
- Type: t2.medium
- EBS: 30GB
보안 설정은 다음과 같이 구성하였습니다:
- 인바운드 규칙:
- SSH: EC2 인스턴스에 접속 가능
- TCP Port 8080: Jenkins UI에 접속 가능
- HTTP & HTTPS: 초기 환경 구성을 위해 초기에는 모든 IP 허용
- 아웃바운드 규칙:
- 모든 트래픽 허용
EC2 인스턴스 생성 완료 후에는, 터미널을 열어 ssh
프로토콜을 이용하여 EC2 인스턴스에 접속할 수 있습니다.
$ ssh -i {key-pair.pem} ec2-user@{ec2-public-ip}
key-pair.pem
: EC2를 생성할 때 설정한.pem
키입니다.ec2-public-ip
: EC2의 Public IP 주소를 의미합니다.
EC2 인스턴스에 접속한 후에, 첫 번째 단계로 모든 패키지를 최신버전으로 업데이트합니다.
$ sudo yum update –y
Jenkins에서 GitHub 웹훅과 연동하기 위해서는, Git이 설치되어 있어야 합니다. 아래의 명령어로 Git을 EC2 인스턴스에 설치합시다.
$ sudo yum install git -y
그 다음, Jenkins 리포지토리를 추가하는 절차를 수행합니다.
$ sudo wget -O /etc/yum.repos.d/jenkins.repo \
https://pkg.jenkins.io/redhat-stable/jenkins.repo
이제 Jenkins-CI에서 제공하는 key file을 가져와야 합니다.
$ sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key
$ sudo yum upgrade
다음으로, Jenkins 동작에 필요한 Java를 설치합니다.
$ sudo dnf install java-17-amazon-corretto -y
Java 설치가 완료되면, 이제 Jenkins를 설치합니다.
$ sudo yum install jenkins -y
EC2 인스턴스가 부팅될 때마다 자동으로 Jenkins가 실행될 수 있도록 Linux Service에 등록하는 설정 작업을 진행합니다.
$ sudo systemctl enable jenkins
Created symlink /etc/systemd/system/multi-user.target.wants/jenkins.service → /usr/lib/systemd/system/jenkins.service.
모든 설정이 완료되었으니, Linux 서비스로 Jenkins를 실행합니다.
$ sudo systemctl start jenkins &
마지막으로, Jenkins가 정상적으로 실행되고 있는지를 확인합니다. 실행 상태를 점검하면서 초기 설정을 위한 패스워드도 로그에서 확인할 수 있습니다.
$ sudo systemctl status jenkins
● jenkins.service - Jenkins Continuous Integration Server
Loaded: loaded (/usr/lib/systemd/system/jenkins.service; enabled; preset: disabled)
Active: activating (start) since Fri 2024-02-09 15:44:43 UTC; 38s ago
Main PID: 26822 (java)
Tasks: 44 (limit: 1114)
Memory: 357.2M
CPU: 35.629s
CGroup: /system.slice/jenkins.service
└─26822 /usr/bin/java -Djava.awt.headless=true -jar /usr/share/java/jenkins.war --webroot=/var/cache/jenkins/war --httpPort=8080
Feb 09 15:44:53 ip-172-31-11-157.ap-northeast-2.compute.internal jenkins[26822]: *************************************************************
Feb 09 15:44:53 ip-172-31-11-157.ap-northeast-2.compute.internal jenkins[26822]: *************************************************************
Feb 09 15:44:53 ip-172-31-11-157.ap-northeast-2.compute.internal jenkins[26822]: *************************************************************
Feb 09 15:44:53 ip-172-31-11-157.ap-northeast-2.compute.internal jenkins[26822]: Jenkins initial setup is required. An admin user has been created and a password generated.
Feb 09 15:44:53 ip-172-31-11-157.ap-northeast-2.compute.internal jenkins[26822]: Please use the following password to proceed to installation:
Feb 09 15:44:53 ip-172-31-11-157.ap-northeast-2.compute.internal jenkins[26822]: 83fa88***************
Feb 09 15:44:53 ip-172-31-11-157.ap-northeast-2.compute.internal jenkins[26822]: This may also be found at: /var/lib/jenkins/secrets/initialAdminPassword
Feb 09 15:44:53 ip-172-31-11-157.ap-northeast-2.compute.internal jenkins[26822]: *************************************************************
이번에는 웹 브라우저를 열고 http://{ec2-public-ip}:8080
로 접속해봅니다. Unlock Jenkins 페이지가 나타나면, Jenkins 서버 구축이 성공적으로 완료된 것입니다.
시스템 로그에서 찾은 패스워드를 이용해 Jenkins의 초기 구성 화면으로 진입할 수 있습니다. 이 이후의 과정은 다음 Jenkins와 GitHub Webhooks 연동하기에서 살펴보겠습니다. 🚕 💨
- AWS
- CI / CD