ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • K3S로 프로젝트 구성하기 - 4
    DevOps/K8s 2023. 6. 8. 18:54

    1. 젠킨스로 스프링 자동 빌드

    1-1 스프링부트 프로젝트 생성(3.X)

    intellij 혹은 https://start.spring.io/ 에서 스프링 프로젝트 생성

    디펜던시는 자주 사용하는 lombok, web, devTool로만 사용하였다.

    (스프링 부트 3.X부터 빌드시 jdk가 17이상이어야한다. 이에 따라서 2.X와 설정이 조금 다르다)

     

    테스트용 컨트롤러 생성

     

    yaml파일에 서버 포트 지정

     

    깃허브에 dev 브랜치에 commit, push 한 후 확인

    1-2 젠킨스 로그인 후 플러그인 설치 3가지 (github, post build, gradle)

    설치할 플러그인은

    Dashboard -> Manage Jenkins -> Plugin Manager -> Available Plugins 에서 검색후 설치

    이미 설치된경우는 검색되지 않고 Installed plugins에서 확인가능

     

    github

     

    post build

     

    gradle

    gradle은  dashboard -> Manage Jenkins -> Global Tool Configuration 에서 다음과같이 설정한다.

    1-3 젠킨스 전역 설정 (Gradle, JDK 17)

     

    springboot 3.X 버전이기때문에 jdk를 다음과같이 17버전으로 설정한다.

     

    // 리소스 주소
    https://corretto.aws/downloads/latest/amazon-corretto-17-x64-linux-jdk.tar.gz
    
    // zip 파일
    amazon-corretto-17.0.7.7.1-linux-x64

    1-4 Jenkins New Item으로 새로운 프로젝트 생성

    이름 설정후 Freestyle Project로 생성

     

    1-5 깃허브 프로젝트 uri 지정

    레포 주소와 브랜치 지정

     

     

    1-6 빌드 스탭 Invoke Gradle Script 선택

    빌드는 gradle로 선택한 후 위에서 설정한 전역 설정에서 지정한 gradle 선택

     

     

    여기까지 설정한 후 빌드가 잘 되는지 확인

     

    2. 젠킨스 도커허브로 푸쉬 (또는 하버 사용)

    --이전에 문제가 쿠버네티스로 젠킨스를 사용하다 자원문제인지 자주 프리징되고 다운되어서 로컬 도커로 생성하였다.

     

    도커 사용시 docker exec -it jenkins bash --login로  젠킨스 컨테이너로 로그인한다.

    docker login하여 미리 인증을 해둔다. (한번 인증하면 인증정보가 로컬에 저장되었다.)

    2-1 Jenkins New Item으로 새로운 프로젝트 생성

    새로운 프로젝트 생서 Jenkins New Item 생성 -> 이름 설정후 Freestyle Project로 생성

     

     

    2-2 build Steps 설정

    build Steps만 아래와 같이 설정한다. (Excute Shell로 쉘 명령어 사용)

     

     

    // docker hub 아이디/이미지 이미지이름 형식으로 push
    repository=acoursove2/k3s_backend
    
    // 기본 젠킨스 디렉토리내에 이전에 클론한 깃허브 레포로 이동
    // 도커 파일은 아래 코드 블럭에서 확인
    cd /var/jenkins_home/workspace/ecommerce-dev/
    
    // 도커 빌드
    docker build -t $repository .
    
    // 이미지 푸쉬
    docker push $repository
    
    // 이미지 지우기
    docker rmi $repository

    2-3 Dockerfile생성 (깃허브에 미리 생성해둔다.)

    아래 도커파일을 깃허브 저장소에 생성해둔다. ( 프로젝트 이름에 맞게 변경하여 설정 )

    https://github.com/JEONSEUNGREE/ecommerce-backend/tree/dev

    FROM openjdk:17-jdk-slim
    RUN mkdir backend
    ARG JAR_FILE_PATH=/build/libs/ecommerce-0.1.jar
    COPY ${JAR_FILE_PATH} /backend/ecommerce-0.1.jar
    ENTRYPOINT ["java", "-jar", "backend/ecommerce-0.1.jar"]

     

    여기까지 설정 후 이미지가 도커 허브에 전달되는지 확인

     

    3. 젠킨스 View로 전체 작업 확인

    3-1 Add post build action 설정

    1번에서 생성한 도커 ecommerce-dev 프로젝트 configuration으로 들어온다.

    Add post-build action에 build other projects 선택

    2번에서 생성한 도커이미지 푸쉬 프로젝트를 입력해준다.

    아래와 같이 설정

     

     

    3-2 Dashboard에서 New View 생성

    젠킨스 dashboard 이동 -> New View 클릭 -> Name 생성 -> type은 Delivery Pipeline View으로 지정한다.

     

    3-3 파이프라인 컴포넌트 설정

    1번에서 생성한 스프링부트 빌드 프로젝트를 선택한 후 OK를 선택한다.

     

    첫번째 프로젝트로 이동하여 빌드 시도한다.

     

     

    빌드 시도시 다음과 같이 프로젝트 성공여부를 확인 할 수 있다.

     

     

    빌드 후 도커허브에도 정상적으로 빌드되었는지 확인하면 된다.

     

    댓글

Designed by Tistory.