Update Jenkinsfile

This commit is contained in:
John Hanzu Kim 2025-06-17 09:41:04 +09:00 committed by GitHub
parent c7288ba805
commit b4f16e4350
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -92,55 +92,77 @@ podTemplate(
} }
} }
stage('Build & Push Images') { stage('ACR Login') {
container('docker') { container('azure-cli') {
withCredentials([azureServicePrincipal('azure-credentials')]) { withCredentials([azureServicePrincipal('azure-credentials')]) {
sh """ sh """
echo "=== Docker 데몬 시작 대기 ===" echo "=== Azure 로그인 ==="
timeout 30 sh -c 'until docker info; do sleep 1; done'
echo "=== Azure 로그인 및 ACR 로그인 ==="
az login --service-principal -u \$AZURE_CLIENT_ID -p \$AZURE_CLIENT_SECRET -t \$AZURE_TENANT_ID az login --service-principal -u \$AZURE_CLIENT_ID -p \$AZURE_CLIENT_SECRET -t \$AZURE_TENANT_ID
az account set --subscription 2513dd36-7978-48e3-9a7c-b221d4874f66 az account set --subscription 2513dd36-7978-48e3-9a7c-b221d4874f66
az acr login --name acrdigitalgarage02
echo "=== ACR 인증 토큰 생성 ==="
ACR_TOKEN=\$(az acr login --name acrdigitalgarage02 --expose-token --output tsv --query accessToken)
echo "ACR_TOKEN=\$ACR_TOKEN" > /tmp/acr_token.env
echo "=== ACR 인증 정보 저장 ==="
echo "acrdigitalgarage02.azurecr.io" > /tmp/acr_server.txt
echo "00000000-0000-0000-0000-000000000000" > /tmp/acr_username.txt
echo "\$ACR_TOKEN" > /tmp/acr_password.txt
""" """
}
}
}
services.each { service -> stage('Build & Push Images') {
script { container('docker') {
def buildDir = "smarketing-java/${service}" sh """
def fullImageName = "${props.registry}/${props.image_org}/${service}:${imageTag}" echo "=== Docker 데몬 시작 대기 ==="
timeout 30 sh -c 'until docker info; do sleep 1; done'
echo "=== ACR 로그인 정보 읽기 ==="
ACR_SERVER=\$(cat /tmp/acr_server.txt)
ACR_USERNAME=\$(cat /tmp/acr_username.txt)
ACR_PASSWORD=\$(cat /tmp/acr_password.txt)
echo "=== Docker로 ACR 로그인 ==="
echo "\$ACR_PASSWORD" | docker login \$ACR_SERVER --username \$ACR_USERNAME --password-stdin
"""
echo "Building image for ${service}: ${fullImageName}" services.each { service ->
script {
// 실제 JAR 파일명 동적 탐지 def buildDir = "smarketing-java/${service}"
def actualJarFile = sh( def fullImageName = "${props.registry}/${props.image_org}/${service}:${imageTag}"
script: """
cd ${buildDir}/build/libs
ls *.jar | grep -v 'plain.jar' | head -1
""",
returnStdout: true
).trim()
if (!actualJarFile) {
error "${service} JAR 파일을 찾을 수 없습니다"
}
echo "발견된 JAR 파일: ${actualJarFile}"
sh """ echo "Building image for ${service}: ${fullImageName}"
echo "=== ${service} 이미지 빌드 ==="
docker build \\ // 실제 JAR 파일명 동적 탐지
--build-arg BUILD_LIB_DIR="${buildDir}/build/libs" \\ def actualJarFile = sh(
--build-arg ARTIFACTORY_FILE="${actualJarFile}" \\ script: """
-f smarketing-java/deployment/container/Dockerfile \\ cd ${buildDir}/build/libs
-t ${fullImageName} . ls *.jar | grep -v 'plain.jar' | head -1
""",
echo "=== ${service} 이미지 푸시 ===" returnStdout: true
docker push ${fullImageName} ).trim()
echo "Successfully built and pushed: ${fullImageName}" if (!actualJarFile) {
""" error "${service} JAR 파일을 찾을 수 없습니다"
} }
echo "발견된 JAR 파일: ${actualJarFile}"
sh """
echo "=== ${service} 이미지 빌드 ==="
docker build \\
--build-arg BUILD_LIB_DIR="${buildDir}/build/libs" \\
--build-arg ARTIFACTORY_FILE="${actualJarFile}" \\
-f smarketing-java/deployment/container/Dockerfile \\
-t ${fullImageName} .
echo "=== ${service} 이미지 푸시 ==="
docker push ${fullImageName}
echo "Successfully built and pushed: ${fullImageName}"
"""
} }
} }
} }