인프라/Jenkins

Spring Boot(Gradle) 젠킨스 구축 및 자동배포 - (2) 젠킨스 깃허브 연동 + Dockerhub에 push

소프 2021. 8. 31.

본편

원래는 아래와 같은 구성 으로 할려고 했지만 dockerhub의 automated build 버전이 유료라서 단념하게 되었다.

https://class101.net/products/T6HT0bUDKIH1V5i3Ji2M

 

그래서 아래와 같이 구성할 생각이다.

github master 계정에 push → 
Jenkins에서 github에 올라와있는 springboot 프로젝트를 가져와서 빌드 → 
jenkins 컨테이너에서 이미지로 빌드해서 도커 hub에 push → 
메인 서버에서는 도커 hub에서 docker image를 받아서 컨테이너 실행

 

https://more-learn.tistory.com/26?category=796361

 

 

 

우선 깃허브와 젠킨스를 연동하는 방법은

https://velog.io/@sa1341/Jenkins-SSH%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-GitHub-%EC%97%B0%EB%8F%99%EB%B0%A9%EB%B2%95-9njj0snf

 

Jenkins SSH를 이용한 GitHub 연동방법

젠킨스와 GitHub를 연동하여 프로젝트 소스를 가져와서 빌드하는 방법이 여러가지가 있지만, 사용자명과 비밀번호 인증방식은 보안상 추천하지 않기 때문에 SSH기반으로 젠킨스와 GitHub를 연동하

velog.io

이거

2. GitHub

그대로 하면됨 

 

추가로 필자가 설정 한건 gradle 버전 프로젝트에 적용한 gradle 버전에 맞게 설정 (젠킨스 관리 > Global Tool Configuration)

 

새로만든 Item에서 설정한 것

 

저장소 연결 

Credentials은 위 깃허브 연동 링크에서 만든거로 세팅

 

 

새로만든 Item -> 구성에서 Github hook trigger for GI.. 체크함

 -  master 브랜치에 push 하는 이벤트가 발생할 때 빌드하도록 설정임

 

위에서 설정한 gradle로 변경 + 실행항 명령어 세팅(clean, build)

 

 

Build항목의 맨 아래의 Execute shell에서 add 한후 커멘드 입력

빌드가 끝난 뒤 DockerFile을 이용해 이미지를 만들고 도커허브에 push 하는 명령어

첫번쨰는 dockerFile로 이미지를 만들고

두번째는 마든 이미지를 도커허브에 넣음

 : 도커허브계정/저장소명

 

※ 내가만든 DockerFile(SpringBoot)

FROM openjdk:11-jdk
VOLUME /tmp
ARG JAR_FILE=./module-api/build/libs/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java", "-jar", "-Djava.security.egd=file:/dev/./urandom", "-Dspring.profiles.active=real", "/app.jar"]

 

쉘에 입력된 명령여 sudo 명령을 젠킨스에서 시도하려면 권한을 줘야함

sudo vi /etc/sudoers

jenkins ALL=(ALL) NOPASSWD: ALL 추가 (위험할 수 있음)

 

github hook 세팅 빨강색 무늬 박스에는 {젠킨스서버IP}:{젠킨스포트} 적어주면됨

 

Update webhook 클릭 후 아래와ㅣ 같이 초록색 체크박스가 떠야 정상

만약에 안뜨면

Jenkins 대시보드로 돌아가서 Jenkins -> Dashboard -> Jenkins 관리 -> 플러그인 관리 -> 설치가능 으로 이동한 후 github integration 플러그인을 추가하고 재실행

 

 

 

확인결과 자동 빌드 확인

github에 새로 push

한 docker 파일들이 젠킨스 작업공간에 올라감 ㅅㅅ

 

※ 추후 

Docker hub 과정 거쳐서 워커 인스턴스에서 정상적으로 실행되는지 확인해야할듯 

 

 

참고

https://tecadmin.net/install-gradle-centos-7/

 

How to Install Gradle on CentOS 7

Gradle is an open-source build tool for the automation of applications. The Gradle helps developers team to build, automate and deliver software easier and faster. This tutorial will help you to install Gradle on CentOS/RHEL 7 operating system. You may lik

tecadmin.net

 

https://tape22.tistory.com/20?category=928488 

 

Springboot Gradle + AWS EC2 + Jenkins + Docker로 배포까지(4) : Jenkins에서 도커 이미지 배포하기

1. Dockerfile, docker 배포 파일 준비하기 2. Jenkins에서 ssh 설정하기 3. Jenkins 권한 설정하기 원래는 github 올림 → Jenkins에서 github에 올라와있는 springboot 프로젝트를 가져와서 빌드 → 메인 서버에..

tape22.tistory.com

 

https://cokes.tistory.com/121

 

젠킨스 Gradle 빌드해보기 - 스프링부트 프로젝트

github를 통해 git push가 일어나고 웹훅으로 젠킨스 빌드를 유발합니다. 이 때, github 저장소의 내용을 읽어옵니다. 읽어온 저장소에 gradle를 통해 빌드하고, Dockerfile로 이미지를 만들어 도커 허브에

cokes.tistory.com

 

 

댓글