목표
- 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 해와서 실행하는 파이프라인을 작성해보겠습니다
'프로젝트' 카테고리의 다른 글
Nginx를 이용하여 HTTP를 HTTPS로 리다이렉트하는 방법 (0) | 2024.09.29 |
---|---|
Spring 프로젝트에서 일관된 API 응답 구조를 위한 BaseResponse 설계 및 구현 (0) | 2024.08.18 |
Spring Security에서 Exception Handler(예외 처리) 사용 하기 (0) | 2024.08.04 |