Jenkins 파이프라인 최적화: SonarQube 분석을 services.each 루프로 리팩토링 및 Docker 빌드 timeout 설정 추가

This commit is contained in:
hiondal 2025-09-12 16:05:57 +09:00
parent e945db9dfe
commit 0e9c206ae1

View File

@ -58,39 +58,14 @@ podTemplate(
sh """
chmod +x gradlew
./gradlew build -x test
"""
# 각 서비스별 테스트 및 분석
./gradlew :api-gateway:test :api-gateway:jacocoTestReport :api-gateway:sonar \\
-Dsonar.projectKey=phonebill-api-gateway-${environment} \\
-Dsonar.projectName=phonebill-api-gateway \\
-Dsonar.java.binaries=build/classes/java/main \\
-Dsonar.coverage.jacoco.xmlReportPaths=build/reports/jacoco/test/jacocoTestReport.xml \\
-Dsonar.exclusions=**/config/**,**/entity/**,**/dto/**,**/*Application.class,**/exception/**
./gradlew :user-service:test :user-service:jacocoTestReport :user-service:sonar \\
-Dsonar.projectKey=phonebill-user-service-${environment} \\
-Dsonar.projectName=phonebill-user-service \\
-Dsonar.java.binaries=build/classes/java/main \\
-Dsonar.coverage.jacoco.xmlReportPaths=build/reports/jacoco/test/jacocoTestReport.xml \\
-Dsonar.exclusions=**/config/**,**/entity/**,**/dto/**,**/*Application.class,**/exception/**
./gradlew :bill-service:test :bill-service:jacocoTestReport :bill-service:sonar \\
-Dsonar.projectKey=phonebill-bill-service-${environment} \\
-Dsonar.projectName=phonebill-bill-service \\
-Dsonar.java.binaries=build/classes/java/main \\
-Dsonar.coverage.jacoco.xmlReportPaths=build/reports/jacoco/test/jacocoTestReport.xml \\
-Dsonar.exclusions=**/config/**,**/entity/**,**/dto/**,**/*Application.class,**/exception/**
./gradlew :product-service:test :product-service:jacocoTestReport :product-service:sonar \\
-Dsonar.projectKey=phonebill-product-service-${environment} \\
-Dsonar.projectName=phonebill-product-service \\
-Dsonar.java.binaries=build/classes/java/main \\
-Dsonar.coverage.jacoco.xmlReportPaths=build/reports/jacoco/test/jacocoTestReport.xml \\
-Dsonar.exclusions=**/config/**,**/entity/**,**/dto/**,**/*Application.class,**/exception/**
./gradlew :kos-mock:test :kos-mock:jacocoTestReport :kos-mock:sonar \\
-Dsonar.projectKey=phonebill-kos-mock-${environment} \\
-Dsonar.projectName=phonebill-kos-mock \\
// 각 서비스별 테스트 및 SonarQube 분석
services.each { service ->
sh """
./gradlew :${service}:test :${service}:jacocoTestReport :${service}:sonar \\
-Dsonar.projectKey=phonebill-${service}-${environment} \\
-Dsonar.projectName=phonebill-${service} \\
-Dsonar.java.binaries=build/classes/java/main \\
-Dsonar.coverage.jacoco.xmlReportPaths=build/reports/jacoco/test/jacocoTestReport.xml \\
-Dsonar.exclusions=**/config/**,**/entity/**,**/dto/**,**/*Application.class,**/exception/**
@ -98,6 +73,7 @@ podTemplate(
}
}
}
}
stage('Quality Gate') {
timeout(time: 10, unit: 'MINUTES') {
@ -109,6 +85,7 @@ podTemplate(
}
stage('Build & Push Images') {
timeout(time: 30, unit: 'MINUTES') {
container('podman') {
withCredentials([usernamePassword(
credentialsId: 'acr-credentials',
@ -131,6 +108,7 @@ podTemplate(
}
}
}
}
stage('Update Kustomize & Deploy') {
container('azure-cli') {