본문 바로가기

프로젝트

GitLab, Jenkins, Docker, S3, EC2를 활용한 CI/CD 파이프라인 구축 - (1) Webhook 설정하기

목표

 

  • Gitlab에 push 혹은 mr이 승인되어서 merge가 될 시 jenkins의 파이프라인이 실행되도록 webhook 설정
  • 백엔드(dev-server)는 Gradle로 build, test 후 Docker 이미지를 생성 후 Dockerhub에 등록
  • ec2에서 Dockerhub에 등록한 Docker 이미지를 pull 받아와서 실행
  • ec2에서 MySQL Docker image를 pull 받아와서 실행
  • 프론트(dev-client)는 npm으로 build 후 s3에 등록

 

EC2 인스턴스에 Jenkins 설치

 

1. CLI를 통해 ssh로 ec2에 원격 접속

ssh -i "ssh 파일" ubuntu@"ec2 주소"

 

2. Java 설치

Jenkins는 Java가 필요하므로 temurin 17버전으로 Java를 설

sudo apt update
wget -O - https://packages.adoptium.net/artifactory/api/gpg/key/public | sudo tee /etc/apt/trusted.gpg.d/adoptium.asc
echo "deb https://packages.adoptium.net/artifactory/deb focal main" | sudo tee /etc/apt/sources.list.d/adoptium.list
sudo apt install temurin-17-jdk -y
sudo apt update
java -version // java 설치 확인

 

3. Jenkins 설치

wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.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 update
sudo apt install jenkins -y

 

4. Jenkins 실행 및 초기 설정

http://<EC2-퍼블릭-IP>:8080로 접속 후 초기 설정 진행

플러그인은 추천 플러그인으로 설치하고 관리자 계정을 생성한 후 접속 URL을 설정합니

 

파이프라인 생성

 

1. 대시보드에서 새로운 아이템 생성 선택

 

2. 파이프라인 생성

이름 입력 -> 파이프라인 선택 -> OK 클릭

 

 

Gitlab 연결 등록

 

1. Gitlab plugin 설치

jenkins 관리 -> Plugins -> Avaliable plugins -> Gitlab Plugin 설치

 

2. Gitlab Credential 등록

1) Gitlab AccessToken 생성

 

토큰 이름, 만료일, 역할, 범위 지정 후 토큰 생성

 

2) Jenkins Credential 등록

jenkins 관리 -> Credentials -> (global) 도메인 클릭 -> Add Credentials

Gitlab에서 생성한 API token 및 ID(Credential의 이름) 입력

3. Gitlab connection 등록

jenkins 관리 -> System -> 이름과 Gitlab url 작성, Credential에 이전에 생성한 Credential 선택

 

Webhook 설정

 

1. Jenkins 설정

파이프라인 선택 -> 구성

설정했던 Gitlab Connection 이름 선택

 

Build Triggers에서 GitLab webhook 선택, 옆에 URL을 나중에 사용하니 기록

Trigger가 언제 일어날지 목적에 맞게 선택 : Push, Accepted Merge Request

 

고급 클릭 후 허용할 브랜치 선택 : dev-server 브랜치

Secret token을 Generate 버튼으로 생성 후 기록

 

2. Gitlab 설정

Settings -> Webhooks -> Add new webhook

URL과 Secret token에 이전에 기록해 둔 두 값 입력

 

Webhook이 발생할 트리거 선택 : dev-server에 push될 때 mr와 관련된 이벤트 발생 

 

 

이제 Gitlab에서 백엔드를 관리하는 dev-server에 push 혹은 mr이 승인될 경우 파이프라인이 자동으로 작동하게 됩니다

다음 편에서는 백엔드 파일을 build, test하고 Docker 이미지를 생성 후 Dockerhub에 등록하고 이를 EC2 인스턴스에서 pull 해와서 실행하는 파이프라인을 작성해보겠습니다