카테고리 없음
[Jenkins] git commit 이벤트 발생 시 자바 프로젝트 자동 배포
개발에목마른쭌
2023. 5. 11. 19:33
- Jenkins 내부에 배포할 프로젝트에 맞는 JDK 버전, Docker
docker exec -it jenkins_1 bash
apt-get update
apt-get install openjdk-17-jdk -y
# jdk 경로 찾기
locate java | fgrep 17 | fgrep javac
jenkins에 도커 설치
apt-get update -y
apt-get install -y ca-certificates curl gnupg lsb-release
mkdir -p /etc/apt/keyrings
rm /etc/apt/keyrings/docker.gpg
curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
$(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
apt-get update
apt-get install -y docker-ce docker-ce-cli docker-compose-plugin
<사전작업>
- Item만들기(프리스타일)
- git 레포 주소, 브랜치 기입
- 생성 후 즉시 빌드 (깃에서 자동으로 pull함)
- 추가해야할 파일 있을시 생성 (application-secret.yml 등)
# 젠킨스 빌드가 실행된 경로
/docker_projects/jenkins_1/var/jenkins_home/workspace
<자동배포>
- 기존 Item 지우기
- Item 만들기 (파이프라인) 선택
- GitHub hook trigger for GITScm polling
- JDK version 등록
- 파이프라인에 자동 실행할 쉘 명령어 작성 (기존 컨테이너,이미지 삭제 / git pull / 빌드 / 도커 컨테이너 )
##### 양식
pipeline {
agent any
tools {
jdk 'openjdk-17-jdk'
}
stages {
stage('Prepare') {
steps {
git branch: '4Week',
url: 'https://github.com/jooooonj/Mission_LeeJaeJun'
}
post {
success {
sh 'echo "Successfully Cloned Repository"'
}
failure {
sh 'echo "Fail Cloned Repository"'
}
}
}
stage('Build Gradle Test') {
steps {
sh (script:'''
echo "Build Gradle Test Start"
''')
dir('.') {
sh """
chmod +x gradlew
"""
}
dir('.') {
sh """
./gradlew clean build
"""
}
}
post {
success {
sh 'echo "Successfully Build Gradle Test"'
}
failure {
sh 'echo "Fail Build Gradle Test"'
}
}
}
stage('Docker Rm') {
steps {
sh 'echo "Docker Run Start"'
sh """
docker stop gram_1
docker rm -f gram_1
docker rmi -f gram
"""
}
post {
success {
sh 'echo "Docker Rm Success"'
}
failure {
sh 'echo "Docker Rm Fail"'
}
}
}
stage('Bulid Docker Image') {
steps {
sh 'echo " Image Bulid Start"'
sh """
docker build -t gram .
"""
}
post {
success {
sh 'echo "Bulid Docker Image Success"'
}
failure {
sh 'echo "Bulid Docker Image Fail"'
}
}
}
stage('Docker Run') {
steps {
sh 'echo "Docker Run Start"'
sh """
docker run \
--name=gram_1 \
-p 8080:8080 \
--restart unless-stopped \
-e TZ=Asia/Seoul \
-d \
gram
"""
}
post {
success {
sh 'echo "Docker Run Success"'
}
failure {
sh 'echo "Docker Run Fail"'
}
}
}
}
}
리포지터리 웹훅 추가
- 추가해야하는 웹훅 주소 : 젠킨스에 접속하는 URL 주소 + /github-webhook/