CI/CD 란? 

애플리케이션 개발 단계를 자동화하여 더 빠르고 안정적으로 사용자에게 제공하는 방법이다. 

  • CI (Continuous Integration, 지속적 통합): 개발자가 작성한 코드를 Git과 같은 중앙 저장소에 통합할 때마다 자동으로 빌드 및 테스트하여 코드의 품질을 검증하는 과정 
  • CD (Continuous Deployment, 지속적 배포): CI 과정을 통과한 코드를 실제 운영 서버까지 자동으로 배포하고 실행하는 과정

GitLab 설정: Jenkins 연동 준비

-> Jenkins가 GitLab 프로젝트에 접근할 수 있도록 개인용 Access Token을 발급

  1. gitlab Access Token 발급하기
    1. 왼쪽 상단 Edit Profile → 왼쪽 네비게이션 바 Access Tokens 클릭 → 토큰 이름 설정 및 체크 → ‘Create personal access token’ 클릭

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

 
  1. jenkins 프로젝트 생성 및 설정
    1. Jenkins 관리 → System Configuration → System → credentials → add → Jenkins → username :깃랩이름 , password : 발급받은 엑세스 토큰 → 깃랩과 젠킨스 간에 연동 완료!

Jenkins 관리->Security->Credentials 에서도 추가, 확인 가능 (global 클릭 시 추가도 가능)

Jenkins 설정: GitLab 연동 및 Webhook 설정

  1. webhooks 설정
    1. 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 클릭하면 시크릿키 발급 완료 !

발급 받은 시크릿키는 깃랩 웹훅 설정할 때 시크릿키 설정칸에 입력

 

 

+ Recent posts