본문 바로가기

PrivateCloud/CI CD (지속적인 통합, 배포 파이프라인 구축)

1. (CI/CD) Jenkins과 Harbor 연동 및 테스트 이미지 업로드 하기

728x90
반응형

# Jenkins와 Harbor를 연동하고 테스트 이미지를 Harbor에 업로드하는 작업이다.

1. Harbor용 Jenkins Credencials 생성

Jenkins 관리 > Manage Credencials > System > Global credentials (unrestricted) > Add Credencials 클릭

- 세부 설정

ID는 나중에 파이프라인에서 인식할 수 있는 credentials의 ID이기에 Harbor로 기입하고 username은 구축한 harbor의 계정, pw는 말그대로 harbor계정의 pw를 입력한다. Description은 harbor credentials라는것을 이해할 수 있게끔 임의로 한다.

- Jenkins  에서의 Harbor Credentials 정보

2. Gitlab에서 Harbor 연동

- 기본 구성은 아래와 같다.

- Jenkinsfile 내용

/* pipeline 변수 설정 */
def app

node {
    // gitlab으로부터 소스 다운하는 stage
    stage('Checkout') {
            checkout scm
    }

    // mvn 툴 선언하는 stage, 필자의 경우 maven 3.6.0을 사용중
    stage('Ready'){
        sh "echo 'Ready to build'"
    }

    // mvn 빌드로 jar파일을 생성하는 stage
    stage('Build'){
        sh "echo 'Build Spring Boot Jar'"
    }

    //dockerfile기반 빌드하는 stage ,git소스 root에 dockerfile이 있어야한다
    stage('Build image'){
        app = docker.build("fe/notice-board")
    }

    //docker image를 push하는 stage, 필자는 dockerhub에 이미지를 올렸으나 보통 private image repo를 별도 구축해서 사용하는것이 좋음
    //docker.withRegistry에 dockerhub는 앞서 설정한 dockerhub credentials의 ID이다.
    stage('Push image') {
        docker.withRegistry("http://15.165.141.22:8088", "Harbor") {
            app.push("22")
            app.push("latest-01") // 태그를 부여한다. latest-01, 22
        }
    }

    stage('Complete') {
        sh "echo 'The end'"
    }
  }

- Dockerfile의 내용

FROM adoptopenjdk:11-jdk-hotspot AS builder
COPY gradlew .
COPY gradle gradle
COPY build.gradle .
COPY settings.gradle .
COPY src src
RUN chmod +X ./gradlew
RUN chmod 755 ./gradlew
RUN ./gradlew bootJar

FROM adoptopenjdk:11-jdk-hotspot
COPY --from=builder build/libs/*.jar app.jar

EXPOSE 8080
ENTRYPOINT ["java", "-jar", "/app.jar"]

3. Harbor로 이동하여 저장된 이미지를 확인

- 자동으로 태그값을 변경하면서 이미지 업로드가 진행된다.

4. 현재 까지의 과정을 정리

- 링크 연동

PrivateCloud_ver_01.svg
0.02MB
PrivateCloud_ver_01.drawio
0.00MB

다음에는 Harbor에 업로드된 이미지를 K8s에 자동으로 배포되는 작업을 진행한다.

 

- 끝 - 

728x90
반응형