일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- deploy.sh
- document 함수
- vue 추가
- 타임리프 참조 오류
- 자바 swing 프로젝트
- EL1021E
- 되돌리기
- dbeaver 백업/복구
- 테스팅
- 깃허브 토큰 발급
- 깃허브 토큰 생성
- Quartz 라이브러리
- firstChild
- Jenkins
- .ppk
- 클래스 참조
- 배열 call by value
- git 폴더 모으기
- ..gitignore
- 채팅 프로젝트
- reset
- submit 기본동작
- AWS 생성
- 배포 자동화
- CI/CD
- Node Property
- vue 실행
- 소프트웨어
- 환경변수
- Quartz dependency
- Today
- Total
TY blog
Jenkins CI/CD Spring boot 배포 자동화 - CI 구축하기 본문
CI/CD 란?
1. 지속적 통합(Continuous Integration, CI)
- 여러 명의 개발자가 작성한 코드를 정기적으로 통합
- CI 시스템은 코드를 커밋할 때마다 자동으로 빌드 및 테스트를 수행하여 코드 베이스에 문제가 있는 부분을 빠르게 발견하고 수정할 수 있게 지원
2. 지속적 배포(Continuous Deployment or Continuous Delivery, CD)
- CI의 결과물이 자동으로 배포 가능한 상태로 유지되며, 이를 자동으로 배포하는 과정
* CI/CD의 최종 목표는 빌드/테스트/배포를 자동화하여
개발자가 비즈니스 로직에 집중할 수 있게 하는 것이다.
CI/CD 지원 툴로는 Github Action, travis ci, jenkins 중에서
설정이 복잡하지만 무료로 사용할 수 있는 jenkins를 사용하면서
저의 개인 웹 프로젝트의 CI/CD 배포 자동화 구축을 진행합니다.
Jenkins 배포 흐름도
Github에 Push가 감지되면 Jenkins 서버에 CI요청 후 Build 진행,
생성된 jar파일을 EC2 서버로 전달하여 빌드, 자동화를 진행하며,
Jenkins는 docker Container에 이미지를 받아 설치해 사용합니다.
1. Docker에 Jenkins 설치 및 환경 구성하기
1. Jenkins 이미지 다운로드
docker pull jenkins/jenkins:jdk17
2. Jenkins 볼륨 데이터 생성 (이름 : jenkins-data)
docker volume create jenkins-data
3. Jenkins 볼륨 설정 및 실행 (Port:8180, 항상 재시작)
docker run -d -p 8180:8080 -v /var/run/docker.sock:/var/run/docker.sock -v jenkins-data:/data --restart=always jenkins/jenkins
http://자신의 IP:8180로 Jenkins 웹 접근
비밀번호는 아래 명령어를 입력하면 확인된다.
sudo docker logs jenkins
플러그인 설치를 진행한다.
사용할 계정을 입력하여 생성한다.
2. Jenkins와 Github 연동
1. Github Token 발급받기
https://sunhistory.tistory.com/29
깃허브 토큰정보 확인방법
프로젝트 IDE에서 깃허브 계정추가 시에나 로그인 시에 토큰이 사용된다. 항상 토큰이 어디 페이지에 있었는지 까먹어서 글을 남긴다. 1. 우측 상단 프로필 정보 클릭 후 Settings 클릭 2. 왼쪽 하단
sunhistory.tistory.com
범위 선택 옵션으로
repo, admin:org, admin:repo_hook을 설정
- repo : 레포지토리의 읽기/쓰기 액세스를 제공
- admin:org : 깃허브 조직(organization)에 대한 관리 권한을 제공
- admin:repo_hook : 레포지토리 훅(리포지토리에 대한 웹훅)을 관리
2. Github Repository에 웹 훅 설정하기
배포 자동화할 프로젝트 Repository에 들어가 Setting > Webhooks 이동 후 우측 상단 Add webhook 버튼 클릭
Payload URL에는 세팅한 Jenkins 주소에 github-webhook/ 경로를 추가 후 URL 지정
EX) http://Jenkins 서버 ip:8080/github-webhook/
Add webhook 버튼 클릭해서 연결 진행
* 주의사항
자신이 세팅한 Jenkins 주소가 모든 IP에서 통신이 되어야 하며
AWS 세팅 시 인바운드 규칙 허용이 필요하다.
3. Jenkins Credentials(작업에 대한 인증정보) 생성
Jenkins 메인화면에서 Jenkins 관리 > Credentials 클릭
클릭 후 global 링크를 클릭해서 Add Credentials 버튼 클릭
Kind와 Scope 옵션은 기본값으로 두고 Username 에는 Github 사용자 이름 입력,
Password는 발급받은 액세스 토큰을 입력, ID / Description은 프로젝트를 구분할 수 있게 자유롭게 입력합니다.
* 주의사항
토큰 만료일이 지나면 Jenkins 사용이 안 돼 만료일에 유의
4. Item 생성하기
Jenkins 좌측 메뉴에 + 새로운 Item 클릭 후 메뉴 이동
Freestyle project 선택
Github 프로젝트 Repository 주소 입력
선택한 Branch에 push가 진행되면
webhook이 발생하여 빌드를 진행할 수 있게 설정한다.
3. 빌드 자동화 설정
Jenkins 메인화면에서 Jenkins 관리 > Tools 클릭
Gradle 도구를 프로젝트 배포 Gradle 버전에 맞게 세팅한다.
* 프로젝트 버전은 gradle/wrapper/gradle-wrapper.properties
에서 확인 가능
추가해 주고 위에서 만들었던 Item을 수정하러 갑니다.
Build Steps 단계에서
추가한 Gradle Tool을 선택하고, Tasks에는 Build 명령어를 추가하고 저장합니다.
5. CI 설정 완료 및 테스트
우측에 프로젝트 실행버튼을 눌러 빌드를 진행할 수 있으며
빌드 기록을 확인할 수 있습니다.
정상적으로 Build가 진행됐으며 여기까지 설정단계가 CI 단계이고
글이 좀 길어져 CD 부분은 다음 글에서 다시 진행하겠습니다.
'DevOps' 카테고리의 다른 글
Failed to stop bean 'webServerStartStop' Error 해결 (0) | 2024.05.13 |
---|---|
Jenkins CI/CD Spring boot 배포 자동화 - CD 구축하기 (0) | 2024.05.09 |
Spring boot 배포 스크립트 작성 (0) | 2024.05.08 |