
Git Webhook는 리포지토리 또는 조직에서 특정 작업이 발생할 때마다 외부 웹 서버로 전달할 알림 웹 서비스이다.
Github Repository로 이동 후 Settings 버튼을 클릭한다.

Webhooks 탭 클릭 후, Add webhook 버튼을 클릭한다.

Payload URL란에 아래의 형식으로 입력한다.
http://{서버 DNS 혹은 호스트 IP 주소}/github-webhook/
Content type은 application/json 형식을 선택한다.
Dockerfile을 생성한다.# Java 21을 포함한 경량 JRE 이미지를 기반으로 설정
FROM bellsoft/liberica-openjdk-alpine:21
# 빌드된 JAR 파일을 컨테이너 이미지 내로 복사
COPY build/libs/itzip-0.0.1-SNAPSHOT.jar app.jar
# 컨테이너가 시작될 때 JAR 파일을 실행하는 명령어 설정
CMD ["java", "-jar", "app.jar"]
docker-compose-springboot.yml을 파일 작성한다.version: '3.9'
services:
dev-backend:
build:
context: ./itzip_back
dockerfile: Dockerfile
image: jdk-21-spring-boot-3.3.1:latest
container_name: dev-springboot
ports:
- "8080:8080"
environment:
- TZ=Asia/Seoul
networks:
- dev
networks:
dev:
external: true
Add Credentials 버튼 클릭 후 Kind 영역에서 Secret file 선택 후 프로젝트 application.yml 파일 삽입한다.
+ 새로운 item 버튼을 클릭한다.

item name 입력 후 Pipeline을 선택한다.

Git Webhooks 웹 서비스를 연결한다.
Definition 옵션에 Pipeline script 항목을 선택한다.Script란에 Pipeline Code를 입력한다.
pipeline {
agent any
stages {
stage('Checkout') {
steps {
git branch: 'main', url: 'https://github.com/ITZipProject/itzip_back.git' // Git 저장소에서 main 브랜치 체크아웃
}
}
stage('secret.yml download') {
steps {
// Secret file이 담긴 Credentials ID명 입력
// dbConfigFile 변수에는 저장된 application.yml이 존재
withCredentials([file(credentialsId: 'itzip_back_.env_file_for_springboot', variable: 'dbConfigFile')]) {
sh '''
pwd
cp $dbConfigFile ./src/main/resources // application.yml를 해당 경로로 복사
'''
}
}
}
stage('Build') {
steps {
sh './gradlew clean' // 이전 빌드 아티팩트 제거
sh './gradlew build' // 새로운 빌드 실행
}
}
stage('Docker-Compose Build and Deploy') {
steps {
sh '''
cd ..
docker-compose -f docker-compose-springboot.yml down || true
docker rmi jdk-21-spring-boot-3.3.1:latest || true
docker-compose -f docker-compose-springboot.yml up -d --build
'''
/*
* 기존에 실행 중인 spring-boot 컨테이너가 존재할 경우 중지
* 기존의 jdk-21-spring-boot-3.3.1 이미지가 존재할 경우 제거
* 새로운 Docker 이미지를 빌드하여 태그 지정
* 새로 빌드된 이미지를 사용하여 컨테이너 실행
*/
}
}
}
}