CI/CD 란?
애플리케이션 개발 단계를 자동화하여 더 빠르고 안정적으로 사용자에게 제공하는 방법이다.
- CI (Continuous Integration, 지속적 통합): 개발자가 작성한 코드를 Git과 같은 중앙 저장소에 통합할 때마다 자동으로 빌드 및 테스트하여 코드의 품질을 검증하는 과정
- CD (Continuous Deployment, 지속적 배포): CI 과정을 통과한 코드를 실제 운영 서버까지 자동으로 배포하고 실행하는 과정

GitLab 설정: Jenkins 연동 준비
-> Jenkins가 GitLab 프로젝트에 접근할 수 있도록 개인용 Access Token을 발급
- gitlab Access Token 발급하기
- 왼쪽 상단 Edit Profile → 왼쪽 네비게이션 바 Access Tokens 클릭 → 토큰 이름 설정 및 체크 → ‘Create personal access token’ 클릭

하면 아래처럼 나오는데 복사해서 사용 (만료기한 설정가능 , 최대1년)

- jenkins 프로젝트 생성 및 설정
- Jenkins 관리 → System Configuration → System → credentials → add → Jenkins → username :깃랩이름 , password : 발급받은 엑세스 토큰 → 깃랩과 젠킨스 간에 연동 완료!
Jenkins 관리->Security->Credentials 에서도 추가, 확인 가능 (global 클릭 시 추가도 가능)
Jenkins 설정: GitLab 연동 및 Webhook 설정
- webhooks 설정
- Jenkins와 연동할 Github Repository → Settings → Webhooks → 아래같은 식으로 작성
시크릿키 발급은 아래 Jenkins → new Item 부분에 정의

연동확인 테스트는 test → push events를 눌렀을 때
Hook executed successfully: HTTP 200 라고 뜨면 성공한것


Jenkins 프로젝트 생성 및 빌드 스크립트 작성
Jenkins → new Item → freestyle project로 생성

후에 설정은 아래처럼 !

Build Steps 에서는 Jenkins가 수행해야 할 구체적인 작업을 작성
- Maven Version : 사용하려는 Maven 버전
- Goals :
- package -D maven.test.skip=true : package 목표를 사용하여 프로젝트를 빌드하고 keywert_batch-0.0.1-SNAPSHOT.jar 파일을 생성
- SOURCE_PATH : 빌드 후 생성된 JAR 파일의 경로
- TARGET_PATH : 배포할 경로
- ssh root@114.202.2.226 mv "$SOURCE_PATH" "$TARGET_PATH/ROOT.jar" : jar 파일을 배포경로로 ROOT.jar라는 이름으로 옮김
- ssh root@114.202.2.226 "java -jar $TARGET_PATH/ROOT.jar" : 해당 서버에 배치작업 실행

이런식으로 하면 깃허브 main에 push, merge할 때마다 배치가 수행된다.
추가로 시크릿키 발급 받는건 아래로 쭉 내리다보면
빌드유발 → 고급 을 선택하면 아래처럼 시크릿키를 발급받을 수 있는 칸이 나온다.
Generate 클릭하면 시크릿키 발급 완료 !
발급 받은 시크릿키는 깃랩 웹훅 설정할 때 시크릿키 설정칸에 입력
