Update Jenkinsfile

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

View File

@ -92,77 +92,60 @@ podTemplate(
}
}
stage('ACR Login') {
container('azure-cli') {
withCredentials([azureServicePrincipal('azure-credentials')]) {
sh """
echo "=== Azure 로그인 ==="
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
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
"""
}
}
}
stage('Build & Push Images') {
container('docker') {
sh """
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
"""
services.each { service ->
script {
def buildDir = "smarketing-java/${service}"
def fullImageName = "${props.registry}/${props.image_org}/${service}:${imageTag}"
// 🔧 ACR Credential을 Jenkins에서 직접 사용
withCredentials([usernamePassword(
credentialsId: 'acr-credentials',
usernameVariable: 'ACR_USERNAME',
passwordVariable: 'ACR_PASSWORD'
)]) {
sh """
echo "=== Docker로 ACR 로그인 ==="
echo "\$ACR_PASSWORD" | docker login ${props.registry} --username \$ACR_USERNAME --password-stdin
"""
echo "Building image for ${service}: ${fullImageName}"
// 실제 JAR 파일명 동적 탐지
def actualJarFile = sh(
script: """
cd ${buildDir}/build/libs
ls *.jar | grep -v 'plain.jar' | head -1
""",
returnStdout: true
).trim()
if (!actualJarFile) {
error "${service} JAR 파일을 찾을 수 없습니다"
}
echo "발견된 JAR 파일: ${actualJarFile}"
services.each { service ->
script {
def buildDir = "smarketing-java/${service}"
def fullImageName = "${props.registry}/${props.image_org}/${service}:${imageTag}"
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 "Building image for ${service}: ${fullImageName}"
echo "Successfully built and pushed: ${fullImageName}"
"""
// 실제 JAR 파일명 동적 탐지
def actualJarFile = sh(
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 "=== ${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}"
"""
}
}
}
}