본편
원래는 아래와 같은 구성 으로 할려고 했지만 dockerhub의 automated build 버전이 유료라서 단념하게 되었다.
그래서 아래와 같이 구성할 생각이다.
github master 계정에 push →
Jenkins에서 github에 올라와있는 springboot 프로젝트를 가져와서 빌드 →
jenkins 컨테이너에서 이미지로 빌드해서 도커 hub에 push →
메인 서버에서는 도커 hub에서 docker image를 받아서 컨테이너 실행
우선 깃허브와 젠킨스를 연동하는 방법은
이거
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/
https://tape22.tistory.com/20?category=928488
'인프라 > Jenkins' 카테고리의 다른 글
센토스 서버 스프링부트 war 파일 배포 연습기록 (0) | 2021.11.13 |
---|---|
젠킨스 이슈 및 해결사항 (0) | 2021.11.13 |
깃허브에 없는 파일을 젠킨스에 수동으로 파일 업로드 하는방법 (0) | 2021.08.31 |
Spring Boot(Gradle) 젠킨스 구축 및 자동배포 - (3) 젠킨스 SSH 생성 후 워커 인스턴스에 등록 (0) | 2021.08.31 |
Spring Boot(Gradle) 젠킨스 구축 및 자동배포 - (1) 젠킨스 세팅 (0) | 2021.08.31 |