From 7e749d15aa01afb34a03a117200cb9856d3e2cc4 Mon Sep 17 00:00:00 2001 From: na0th <105775683+na0th@users.noreply.github.com> Date: Thu, 13 Feb 2025 01:42:46 +0900 Subject: [PATCH 01/22] =?UTF-8?q?feat=20:=20ci/cd=20=EC=A0=A0=ED=82=A8?= =?UTF-8?q?=EC=8A=A4=20=ED=8C=8C=EC=9D=B4=ED=94=84=EB=9D=BC=EC=9D=B8=20?= =?UTF-8?q?=ED=85=8C=EC=8A=A4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 테스트 --- Jenkinsfile | 67 +++++++++++++++++++++++++++++++++++++++++++++++ scripts/deploy.sh | 19 ++++++++++++++ 2 files changed, 86 insertions(+) create mode 100644 Jenkinsfile create mode 100644 scripts/deploy.sh diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000..24ab6dd --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,67 @@ +pipeline { + agent any + + // Docker Hub 자격증명 및 이미지 정보 (Jenkins의 Credentials에 등록되어 있어야 합니다) + environment { + DOCKERHUB_CREDENTIALS = credentials('docker') // Jenkins에 등록된 Docker Hub 크리덴셜 ID + IMAGE_NAME = 'na0th/na0th' + IMAGE_TAG = '1.0.0' // 필요에 따라 버전을 동적으로 지정할 수도 있음 + } + + stages { + stage('Git Checkout') { + steps { + checkout scm + } + } + + stage('Build Docker Image') { + steps { + script { + echo "빌드 중: ${IMAGE_NAME}:${IMAGE_TAG}" + sh "docker build -t ${IMAGE_NAME}:${IMAGE_TAG} ." + } + } + } + + stage('Push Docker Image') { + steps { + script { + echo "Docker Hub에 로그인 중" + // 환경 변수 DOCKERHUB_CREDENTIALS_USR, DOCKERHUB_CREDENTIALS_PSW는 credentials()로부터 자동으로 설정됨 + withCredentials([usernamePassword(credentialsId: 'docker', usernameVariable: 'DOCKER_USER', passwordVariable: 'DOCKER_PASS')]) { + sh "echo ${DOCKER_PASS} | docker login -u ${DOCKER_USER} --password-stdin" + } + echo "이미지 푸시 중: ${IMAGE_NAME}:${IMAGE_TAG}" + sh "docker push ${IMAGE_NAME}:${IMAGE_TAG}" + } + } + } + + + stage('Deploy to EC2') { + steps { + sshagent(['ec2-ssh']) { + sh """ + echo "🚀 배포 스크립트 업로드 중..." + scp -o StrictHostKeyChecking=no ./scripts/deploy.sh ubuntu@54.180.87.11:/home/ubuntu/deploy.sh + + ssh -tt ubuntu@54.180.87.11 -o StrictHostKeyChecking=no << 'EOF' + chmod +x /home/ubuntu/deploy.sh + /home/ubuntu/deploy.sh + EOF + """ + } + } + } + } + + post { + success { + echo '🚀 배포 성공' + } + failure { + echo '❌ 배포 실패' + } + } +} \ No newline at end of file diff --git a/scripts/deploy.sh b/scripts/deploy.sh new file mode 100644 index 0000000..6c09de6 --- /dev/null +++ b/scripts/deploy.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +# docker-compose.yml이 위치한 디렉토리로 이동 (필요한 경우) +cd /home/ubuntu/myproject || exit + +echo "📦 최신 Docker 이미지 가져오기..." +docker-compose pull + +echo "존재하는 컨테이너 중지" +docker compose down + +echo "🔄 컨테이너 재시작..." +# 컨테이너가 실행 중이면 업데이트 적용을 위해 재시작합니다. +docker-compose up -d + +echo "🧹 불필요한 이미지 정리..." +docker image prune -f + +echo "✅ 배포 완료!" From 6cb6e1d1487c32356b01b9dce7d166fdefb09c3d Mon Sep 17 00:00:00 2001 From: na0th <105775683+na0th@users.noreply.github.com> Date: Thu, 13 Feb 2025 01:57:23 +0900 Subject: [PATCH 02/22] =?UTF-8?q?test:=20ci/cd=20=ED=85=8C=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 테스트 --- Jenkinsfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 24ab6dd..d53a5f2 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -58,10 +58,10 @@ pipeline { post { success { - echo '🚀 배포 성공' + echo '🚀 배포 성공!' } failure { - echo '❌ 배포 실패' + echo '❌ 배포 실패!' } } } \ No newline at end of file From 784902b04c7094ecd218ac3cd0d26a6a51d5dc5b Mon Sep 17 00:00:00 2001 From: na0th <105775683+na0th@users.noreply.github.com> Date: Thu, 13 Feb 2025 02:05:19 +0900 Subject: [PATCH 03/22] teset : ci/cd test2 test --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index d53a5f2..5e98061 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -61,7 +61,7 @@ pipeline { echo '🚀 배포 성공!' } failure { - echo '❌ 배포 실패!' + echo '❌ 배포 실패! sad..' } } } \ No newline at end of file From 5f28d457a7d1e872a62a02f53b80ab88b8d2baa3 Mon Sep 17 00:00:00 2001 From: na0th <105775683+na0th@users.noreply.github.com> Date: Thu, 13 Feb 2025 13:12:13 +0900 Subject: [PATCH 04/22] =?UTF-8?q?test=20:=20ci/cd=20=ED=85=8C=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8..?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 테스트 3 --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 5e98061..c325c6f 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -58,7 +58,7 @@ pipeline { post { success { - echo '🚀 배포 성공!' + echo '🚀 배포 성공! happy' } failure { echo '❌ 배포 실패! sad..' From 30eb0a151b7136dbbcfc9970b7ecc95b321f61ac Mon Sep 17 00:00:00 2001 From: na0th <105775683+na0th@users.noreply.github.com> Date: Thu, 13 Feb 2025 13:18:23 +0900 Subject: [PATCH 05/22] =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 수정 --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index c325c6f..81d6b1f 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -3,7 +3,7 @@ pipeline { // Docker Hub 자격증명 및 이미지 정보 (Jenkins의 Credentials에 등록되어 있어야 합니다) environment { - DOCKERHUB_CREDENTIALS = credentials('docker') // Jenkins에 등록된 Docker Hub 크리덴셜 ID + DOCKERHUB_CREDENTIALS = credentials('docker-hub') // Jenkins에 등록된 Docker Hub 크리덴셜 ID IMAGE_NAME = 'na0th/na0th' IMAGE_TAG = '1.0.0' // 필요에 따라 버전을 동적으로 지정할 수도 있음 } From 84e83d443f5deb3268744c32b6bf0c35ce8ef086 Mon Sep 17 00:00:00 2001 From: na0th <105775683+na0th@users.noreply.github.com> Date: Thu, 13 Feb 2025 13:25:52 +0900 Subject: [PATCH 06/22] =?UTF-8?q?test=20:=20=EB=8F=84=EC=BB=A4=ED=8C=8C?= =?UTF-8?q?=EC=9D=BC=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ci/cd --- Dockerfile | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..f92254c --- /dev/null +++ b/Dockerfile @@ -0,0 +1,11 @@ +# 1. 사용할 베이스 이미지 (OpenJDK 17) +FROM openjdk:17 + +# 2. 작업 디렉토리 설정 +WORKDIR /app + +# 3. JAR 파일을 컨테이너 내부로 복사 +COPY target/*.jar app.jar + +# 4. 컨테이너가 실행될 때 실행할 명령어 +CMD ["java", "-jar", "app.jar"] From 4a429b7775eb1e2170e457ae58ac4f18117d3149 Mon Sep 17 00:00:00 2001 From: na0th <105775683+na0th@users.noreply.github.com> Date: Thu, 13 Feb 2025 13:46:02 +0900 Subject: [PATCH 07/22] =?UTF-8?q?refactor=20:=20ci=20=ED=8C=8C=EC=9D=BC=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 바뀐 점 빌드 과정 생략하고 테스트랑, 컴파일만.. -> 빌드시 jar 생성이 오래걸리고, 캐싱은 의미가 없고 느림.. 삭제하기 --- .github/workflows/ci.yml | 26 +++++++++----------------- 1 file changed, 9 insertions(+), 17 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 89d5b26..e9ce1fc 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -23,29 +23,21 @@ jobs: - name: Grant execute permission for Gradle Wrapper run: chmod +x ./gradlew - - name: Cache Gradle dependencies - uses: actions/cache@v3 - with: - path: | - ~/.gradle/caches - ~/.gradle/wrapper - key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} - restore-keys: | - ${{ runner.os }}-gradle- - - name: Set up JDK uses: actions/setup-java@v4 with: java-version: '21' distribution: 'temurin' - - name: Build with Gradle - run: ./gradlew build +# 빌드로 jar 파일을 만들 필요는 없어보이고, 나머지 작업은 jenkins 에서.. +# - name: Build with Gradle +# run: ./gradlew build + + - name: Compile Source Code # ✅ 소스 코드 컴파일 추가 + run: ./gradlew compileJava --no-daemon + + - name: Run tests with Gradle # ✅ 테스트 실행 + run: ./gradlew test --no-daemon --refresh-dependencies - - name: Clear Gradle cache on failure - if: failure() - run: rm -rf ~/.gradle/caches -# - name: Test with Gradle -# run: ./gradlew test From f3876e2f17fa0fca25e4a178cecd971e48e12098 Mon Sep 17 00:00:00 2001 From: na0th <105775683+na0th@users.noreply.github.com> Date: Thu, 13 Feb 2025 13:46:52 +0900 Subject: [PATCH 08/22] =?UTF-8?q?test=20:=20ci/cd=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 도커파일 추가 2. 빌드 과정 추가 --- Dockerfile | 9 +-------- Jenkinsfile | 12 +++++++++++- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/Dockerfile b/Dockerfile index f92254c..02daa27 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,11 +1,4 @@ -# 1. 사용할 베이스 이미지 (OpenJDK 17) FROM openjdk:17 - -# 2. 작업 디렉토리 설정 WORKDIR /app - -# 3. JAR 파일을 컨테이너 내부로 복사 -COPY target/*.jar app.jar - -# 4. 컨테이너가 실행될 때 실행할 명령어 +COPY build/libs/*.jar app.jar CMD ["java", "-jar", "app.jar"] diff --git a/Jenkinsfile b/Jenkinsfile index 81d6b1f..4a02a76 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -14,7 +14,17 @@ pipeline { checkout scm } } + stage('Build JAR with Gradle') { // ✅ JAR 빌드 추가 + steps { + script { + echo "🛠️ Gradle을 사용하여 JAR 빌드" + sh "./gradlew clean build -x test" // 테스트 제외하고 빌드 + echo "📂 빌드된 파일 확인:" + sh "ls -al build/libs/" + } + } + } stage('Build Docker Image') { steps { script { @@ -64,4 +74,4 @@ pipeline { echo '❌ 배포 실패! sad..' } } -} \ No newline at end of file +} From 00f631bf330f49199e82543d26fa81336817b6a9 Mon Sep 17 00:00:00 2001 From: na0th <105775683+na0th@users.noreply.github.com> Date: Thu, 13 Feb 2025 13:49:52 +0900 Subject: [PATCH 09/22] =?UTF-8?q?test=20:=20ci/cd=20=EC=A0=A0=ED=82=A8?= =?UTF-8?q?=EC=8A=A4=20=ED=8C=8C=EC=9D=BC=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 실행 권한 부여 --- Jenkinsfile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Jenkinsfile b/Jenkinsfile index 4a02a76..ad0422b 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -17,6 +17,9 @@ pipeline { stage('Build JAR with Gradle') { // ✅ JAR 빌드 추가 steps { script { + echo "🛠️ Gradle 실행 권한 부여" + sh "chmod +x ./gradlew" // ✅ 실행 권한 추가 + echo "🛠️ Gradle을 사용하여 JAR 빌드" sh "./gradlew clean build -x test" // 테스트 제외하고 빌드 From 41a7f6be8aa566601e2c046c0d8e7356102058d5 Mon Sep 17 00:00:00 2001 From: na0th <105775683+na0th@users.noreply.github.com> Date: Thu, 13 Feb 2025 23:16:03 +0900 Subject: [PATCH 10/22] test : ci/cd test 3 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 젠킨스 내 자바 버전 바꾸기 --- Dockerfile | 2 +- Jenkinsfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 02daa27..00b2c50 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM openjdk:17 +FROM openjdk:21 WORKDIR /app COPY build/libs/*.jar app.jar CMD ["java", "-jar", "app.jar"] diff --git a/Jenkinsfile b/Jenkinsfile index ad0422b..9c5e947 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -19,7 +19,7 @@ pipeline { script { echo "🛠️ Gradle 실행 권한 부여" sh "chmod +x ./gradlew" // ✅ 실행 권한 추가 - + echo "🛠️ Gradle을 사용하여 JAR 빌드" sh "./gradlew clean build -x test" // 테스트 제외하고 빌드 From b6ecb2214db7554704b1bb0493f42acac86cdfbd Mon Sep 17 00:00:00 2001 From: na0th <105775683+na0th@users.noreply.github.com> Date: Thu, 13 Feb 2025 23:28:46 +0900 Subject: [PATCH 11/22] test : ci/cd test 4 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 테스트 --- Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Dockerfile b/Dockerfile index 00b2c50..621690c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,3 +1,4 @@ +# 21로 변경 FROM openjdk:21 WORKDIR /app COPY build/libs/*.jar app.jar From 841b93bc57823256da720c16c69573c1ae711b2a Mon Sep 17 00:00:00 2001 From: na0th <105775683+na0th@users.noreply.github.com> Date: Thu, 13 Feb 2025 23:31:18 +0900 Subject: [PATCH 12/22] test : ci/cd test4 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 자바 17로 다시 변경 --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 621690c..da28cff 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ # 21로 변경 -FROM openjdk:21 +FROM openjdk:17 WORKDIR /app COPY build/libs/*.jar app.jar CMD ["java", "-jar", "app.jar"] From 95077edf1895898f7edbf15e76f2c1c1743d77e0 Mon Sep 17 00:00:00 2001 From: na0th <105775683+na0th@users.noreply.github.com> Date: Thu, 13 Feb 2025 23:34:59 +0900 Subject: [PATCH 13/22] test : ci/cd test 5 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit credentials 오류 수정 --- Dockerfile | 2 +- Jenkinsfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index da28cff..621690c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ # 21로 변경 -FROM openjdk:17 +FROM openjdk:21 WORKDIR /app COPY build/libs/*.jar app.jar CMD ["java", "-jar", "app.jar"] diff --git a/Jenkinsfile b/Jenkinsfile index 9c5e947..71d725c 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -3,7 +3,7 @@ pipeline { // Docker Hub 자격증명 및 이미지 정보 (Jenkins의 Credentials에 등록되어 있어야 합니다) environment { - DOCKERHUB_CREDENTIALS = credentials('docker-hub') // Jenkins에 등록된 Docker Hub 크리덴셜 ID + DOCKERHUB_CREDENTIALS = credentials('docker') // Jenkins에 등록된 Docker Hub 크리덴셜 ID IMAGE_NAME = 'na0th/na0th' IMAGE_TAG = '1.0.0' // 필요에 따라 버전을 동적으로 지정할 수도 있음 } From 741438fccfcf2b593bef0991f88ca40c8af7643c Mon Sep 17 00:00:00 2001 From: na0th <105775683+na0th@users.noreply.github.com> Date: Thu, 13 Feb 2025 23:54:27 +0900 Subject: [PATCH 14/22] test : ci/cd 6 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 테스트 자꾸 credentials가 바뀜 --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 71d725c..9c5e947 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -3,7 +3,7 @@ pipeline { // Docker Hub 자격증명 및 이미지 정보 (Jenkins의 Credentials에 등록되어 있어야 합니다) environment { - DOCKERHUB_CREDENTIALS = credentials('docker') // Jenkins에 등록된 Docker Hub 크리덴셜 ID + DOCKERHUB_CREDENTIALS = credentials('docker-hub') // Jenkins에 등록된 Docker Hub 크리덴셜 ID IMAGE_NAME = 'na0th/na0th' IMAGE_TAG = '1.0.0' // 필요에 따라 버전을 동적으로 지정할 수도 있음 } From f5912f0d98166c59e7c206de8e152fa211802327 Mon Sep 17 00:00:00 2001 From: na0th <105775683+na0th@users.noreply.github.com> Date: Fri, 14 Feb 2025 01:09:37 +0900 Subject: [PATCH 15/22] test : ci/cd test 7 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 테스트 젠킨스 이미지 java 21 수동 설치 --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 9c5e947..ce1b2f9 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -71,7 +71,7 @@ pipeline { post { success { - echo '🚀 배포 성공! happy' + echo '🚀 배포 성공! happy!!' } failure { echo '❌ 배포 실패! sad..' From 2910b500be0754bcdc4b6e2d2c2aa28a808f7bdd Mon Sep 17 00:00:00 2001 From: na0th <105775683+na0th@users.noreply.github.com> Date: Fri, 14 Feb 2025 01:37:33 +0900 Subject: [PATCH 16/22] test: ci/cd test 7 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 자바 17로 다운그레이드 기본 젠킨스 이미지가 자바 21이 안된다.. 수동설치해야되는데 설정할게 너무많다. --- .github/workflows/ci.yml | 2 +- Dockerfile | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e9ce1fc..855e1fa 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,7 +26,7 @@ jobs: - name: Set up JDK uses: actions/setup-java@v4 with: - java-version: '21' + java-version: '17' distribution: 'temurin' # 빌드로 jar 파일을 만들 필요는 없어보이고, 나머지 작업은 jenkins 에서.. diff --git a/Dockerfile b/Dockerfile index 621690c..933a751 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ -# 21로 변경 -FROM openjdk:21 + +FROM openjdk:17 WORKDIR /app COPY build/libs/*.jar app.jar CMD ["java", "-jar", "app.jar"] From 5e93de0a8739dd7b1e6006b9fabb5090254c8f03 Mon Sep 17 00:00:00 2001 From: na0th <105775683+na0th@users.noreply.github.com> Date: Fri, 14 Feb 2025 01:39:37 +0900 Subject: [PATCH 17/22] test: ci/cd 8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 도커허브 -> 도커 --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index ce1b2f9..e899b81 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -3,7 +3,7 @@ pipeline { // Docker Hub 자격증명 및 이미지 정보 (Jenkins의 Credentials에 등록되어 있어야 합니다) environment { - DOCKERHUB_CREDENTIALS = credentials('docker-hub') // Jenkins에 등록된 Docker Hub 크리덴셜 ID + DOCKERHUB_CREDENTIALS = credentials('docker') // Jenkins에 등록된 Docker Hub 크리덴셜 ID IMAGE_NAME = 'na0th/na0th' IMAGE_TAG = '1.0.0' // 필요에 따라 버전을 동적으로 지정할 수도 있음 } From 38401c19567880b43acbea00f7b02e088cd11543 Mon Sep 17 00:00:00 2001 From: na0th <105775683+na0th@users.noreply.github.com> Date: Fri, 14 Feb 2025 01:43:42 +0900 Subject: [PATCH 18/22] test : cicd 9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 자바 빌드 21 -> 17 --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index c08c790..5824c90 100644 --- a/build.gradle +++ b/build.gradle @@ -9,7 +9,7 @@ version = '0.0.1-SNAPSHOT' java { toolchain { - languageVersion = JavaLanguageVersion.of(21) + languageVersion = JavaLanguageVersion.of(17) } } From 9abff05dfc3ee407c43036ecd53eb9eafab0e734 Mon Sep 17 00:00:00 2001 From: na0th <105775683+na0th@users.noreply.github.com> Date: Fri, 14 Feb 2025 01:52:06 +0900 Subject: [PATCH 19/22] test : ci/cd 10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 도커 허브 비밀번호 잘못 적음 --- Jenkinsfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index e899b81..1c28cfc 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -5,7 +5,7 @@ pipeline { environment { DOCKERHUB_CREDENTIALS = credentials('docker') // Jenkins에 등록된 Docker Hub 크리덴셜 ID IMAGE_NAME = 'na0th/na0th' - IMAGE_TAG = '1.0.0' // 필요에 따라 버전을 동적으로 지정할 수도 있음 + IMAGE_TAG = '1.0.0' // 필요에 따라 버전을 동적으로 지정할 수도 있음. } stages { @@ -40,7 +40,7 @@ pipeline { stage('Push Docker Image') { steps { script { - echo "Docker Hub에 로그인 중" + echo "Docker Hub에 로그인 중.." // 환경 변수 DOCKERHUB_CREDENTIALS_USR, DOCKERHUB_CREDENTIALS_PSW는 credentials()로부터 자동으로 설정됨 withCredentials([usernamePassword(credentialsId: 'docker', usernameVariable: 'DOCKER_USER', passwordVariable: 'DOCKER_PASS')]) { sh "echo ${DOCKER_PASS} | docker login -u ${DOCKER_USER} --password-stdin" From c3922fec5f2d3d70cdb29624774bbeed771c3350 Mon Sep 17 00:00:00 2001 From: na0th <105775683+na0th@users.noreply.github.com> Date: Fri, 14 Feb 2025 02:31:30 +0900 Subject: [PATCH 20/22] test: ci/cd 11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ssh agent 설치 --- Jenkinsfile | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 1c28cfc..fdde4f0 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -54,16 +54,16 @@ pipeline { stage('Deploy to EC2') { steps { - sshagent(['ec2-ssh']) { - sh """ - echo "🚀 배포 스크립트 업로드 중..." - scp -o StrictHostKeyChecking=no ./scripts/deploy.sh ubuntu@54.180.87.11:/home/ubuntu/deploy.sh + sshagent (credentials: ['ec2-ssh']) { + sh """ + echo "🚀 배포 스크립트 업로드 중..." + scp -o StrictHostKeyChecking=no ./scripts/deploy.sh ubuntu@54.180.87.11:/home/ubuntu/deploy.sh - ssh -tt ubuntu@54.180.87.11 -o StrictHostKeyChecking=no << 'EOF' - chmod +x /home/ubuntu/deploy.sh - /home/ubuntu/deploy.sh - EOF - """ + ssh -tt ubuntu@54.180.87.11 -o StrictHostKeyChecking=no << 'EOF' + chmod +x /home/ubuntu/deploy.sh + /home/ubuntu/deploy.sh + EOF + """ } } } From b2ef9668528ab35dd3bcdba07b563dd7e1a1771d Mon Sep 17 00:00:00 2001 From: na0th <105775683+na0th@users.noreply.github.com> Date: Fri, 14 Feb 2025 11:28:18 +0900 Subject: [PATCH 21/22] test : ci/cd 12 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 젠킨스 ssh agent plugin 설치 --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index fdde4f0..3645ae5 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -74,7 +74,7 @@ pipeline { echo '🚀 배포 성공! happy!!' } failure { - echo '❌ 배포 실패! sad..' + echo '❌ 배포 실패.. sad..' } } } From 10701c05b5d37805f9842f941d754738deaaa1eb Mon Sep 17 00:00:00 2001 From: na0th <105775683+na0th@users.noreply.github.com> Date: Fri, 14 Feb 2025 11:46:01 +0900 Subject: [PATCH 22/22] test : cicd 14 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ec2 스크립트 수정 eof 오류.. --- Jenkinsfile | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 3645ae5..e0e3f50 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -58,11 +58,9 @@ pipeline { sh """ echo "🚀 배포 스크립트 업로드 중..." scp -o StrictHostKeyChecking=no ./scripts/deploy.sh ubuntu@54.180.87.11:/home/ubuntu/deploy.sh - - ssh -tt ubuntu@54.180.87.11 -o StrictHostKeyChecking=no << 'EOF' - chmod +x /home/ubuntu/deploy.sh - /home/ubuntu/deploy.sh - EOF + + echo "🚀 EC2에서 배포 스크립트 실행..." + ssh -tt ubuntu@54.180.87.11 -o StrictHostKeyChecking=no "chmod +x /home/ubuntu/deploy.sh && /home/ubuntu/deploy.sh" """ } }