개요
저번 포스팅에서는 EC2에 Jenkins를 설치하여 Jenkins 서버를 구성하는 단계까지 진행했었습니다.
이번 포스팅에서는 Jenkins와 Github를 연동하고 테스트 & 빌드 하는 단계까지 진행해 보겠습니다.
Jenkins + SpringBoot로 CI/CD 구축해보기(1) - Git Token 생성
Jenkins와 Github를 연동하기 위해서는 Git Token을 Jenkins Credential에 등록하는 과정이 필요합니다.
먼저, Github의 우측 상단의 프로필 사진이 있는 버튼을 눌러 탭을 엽니다.
이후에 Settings 버튼을 눌러 Settings 페이지로 넘어옵니다.
Settings 페이지 좌측 하단의 Developer Settings 버튼을 눌러 Developer Settings 페이지에 접근할 수 있도록 합니다.
이후에 사진에 보이는 Generate new token 버튼을 눌러 신규 토큰을 생성해 줍니다.
(저는 모두 Classic으로 진행했습니다.)
이렇게 3개의 scope에 대해 선택해 준 후 토큰을 생성합니다.
토큰 생성이 완료됐다면 페이지에 보이는 토큰 값을 복사해 따로 저장해둡니다.
Jenkins + SpringBoot로 CI/CD 구축해보기(2) - Github Webhook 설정하기
이제 Git 토큰 생성은 마쳤으니 Github Webhook을 설정해 봅시다.
자신의 프로젝트 Repo에 Settings 페이지로 들어옵니다.
이후 왼쪽의 Webhooks 버튼을 눌러 위 사진과 같이 Webhook을 등록해 줍니다.
Payload URL에는 http://{your-ec2-instance-ip}:{your-jenkins-service-port}/github-webhook/ << 위 URL을 등록해 줍니다.
Payload URL은 웹훅 이벤트가 발생할 때 Github에서 이벤트를 보낼 서버의 URL입니다.
저희는 젠킨스 서버의 주소를 입력해 주면 됩니다.
Content Type은 application/json으로 설정해 줍시다.
Jenkins + SpringBoot로 CI/CD 구축해보기(3) - Jenkins Credential 등록
다시 Jenkins UI로 돌아와 Jenkins 관리 탭에서 Credentials 버튼을 눌러줍니다.
이렇게 Credential 생성 페이지로 잘 넘어왔다면 내용을 입력해 줍시다.
- Username : 자신의 Github 사용자 이름
- Password : 위에서 발급받은 Git Token
- ID : 유니크한 ID
위 내용들을 입력하고 Create 해줍니다.
Jenkins + SpringBoot로 CI/CD 구축해보기(3) - Jenkins Item 추가하기
위 사진처럼 FreeStyle Jenkins Item을 추가해 줍니다.
소스코드 관리 - Credential에는 위에서 생성한 Credential를 넣어주시면 됩니다.
저는 Branches to build에 main 브랜치로 설정해 줬는데 따로 설정하고 싶은 브랜치가 있다면 그 브랜치를 설정해 주시면 됩니다.
빌드 유발에는 GitHub hook trigger for GITScm polling를 설정해 줍니다.
말 그대로 GitHub 의 hook trigger를 받으면 빌드를 하겠다는 것을 의미합니다.
Jenkins + SpringBoot로 CI/CD 구축해보기(4) - Gradle Build 설정하기
이제 Item 생성을 마쳤으니 Build를 설정해 보겠습니다.
제 SpringBoot 프로젝트는 Gradle로 구성되어 있어 Jenkins에 Gradle Build를 세팅해 보겠습니다.
Jenkins 관리 페이지에서 Tools 버튼을 눌러 Tools 페이지로 이동합니다.
Tools 페이지에서 자신의 SpringBoot 애플리케이션에 맞는 Gradle Version을 추가해 줍니다.
- Gradle Version 확인 : > gradle > wrapper > gradle-wrapper.properties
다시 위에서 생성했던 Item의 구성 페이지에 들어옵니다.
Build Steps에 Invoke Gradle script를 추가해 줍니다.
- Gradle Version : 위에서 생성했던 Gradle Version을 세팅해 줍니다.
- Tasks : 현재 단계에서는 Clean / Build만 세팅해 줍니다.
Jenkins + SpringBoot로 CI/CD 구축해보기(4) - EC2 Swap 메모리 설정
저는 Jenkins 서버를 프리 티어로 제공해 주는 t2.micro로 만들었는데 Gradle 빌드 시에 Jenkins 서버가 먹통이 되버리는 문제가 발생합니다.
이를 해결하기 위해 Jenkins 서버에 Swap 메모리를 설정해 줍시다.
# 프리티어 권장 스왑 공간인 2GB(128M x 16) 스왑 파일을 생성
sudo dd if=/dev/zero of=/swapfile bs=128M count=16
# 스왑 파일의 읽기 및 쓰기 권한을 업데이트
sudo chmod 600 /swapfile
# 스왑 영역을 설정
sudo mkswap /swapfile
# 스왑 공간에 스왑 파일을 추가
sudo swapon /swapfile
# 작업이 제대로 수행되었는지 확인
sudo swapon -s
# /etc/fstab 파일을 편집해서 부팅 시 스왑 파일을 활성화
sudo vi /etc/fstab
# fstab 파일에 아래 줄을 추가 후 저장
/swapfile swap swap defaults 0 0
위 명령어들을 입력하여 Jenkins 서버에 Swap 메모리를 설정해 줘야 Gradle 빌드가 가능했습니다.
설정 안 해주면 빌드 중에 서버가 뻗어버립니다.
Jenkins + SpringBoot로 CI/CD 구축해보기(5) - 빌드해보기
이제 Build를 위한 세팅들은 마쳤으니 한 번 빌드를 진행해 보겠습니다.
Item 화면에서 빌드 버튼을 눌러 프로젝트를 빌드 합니다.
그럼 위 사진처럼 빌드 실행 상태에 로딩 바가 돌아가는 모습을 확인하실 수 있습니다.
BUILD SUCCESSFUL in 1m 36s
8 actionable tasks: 7 executed, 1 up-to-date
Build step 'Invoke Gradle script' changed build result to SUCCESS
Finished: SUCCESS
1 ~ 5분정도 기다려보면 위 사진처럼 Build가 Stable 상태로 잘 진행된 것을 확인하실 수 있습니다.
'Jenkins' 카테고리의 다른 글
[Jenkins] Jenkins + SpringBoot로 CI/CD 구축해보기(3) (0) | 2023.09.21 |
---|---|
[Jenkins] Jenkins + SpringBoot로 CI/CD 구축해보기(1) (0) | 2023.09.20 |