From 1c461f65f43d8766b8a555eda5ad7a595b41a8f5 Mon Sep 17 00:00:00 2001 From: John Hanzu Kim Date: Mon, 16 Jun 2025 18:08:52 +0900 Subject: [PATCH] Update Jenkinsfile --- smarketing-java/deployment/Jenkinsfile | 49 +++++++++++++++++++------- 1 file changed, 37 insertions(+), 12 deletions(-) diff --git a/smarketing-java/deployment/Jenkinsfile b/smarketing-java/deployment/Jenkinsfile index 52bb7e2..d6c554c 100644 --- a/smarketing-java/deployment/Jenkinsfile +++ b/smarketing-java/deployment/Jenkinsfile @@ -40,7 +40,6 @@ podTemplate( echo "ํŒ€ ID: ${props.teamid}" } - // ๐Ÿ”ง ํ•ต์‹ฌ ์ถ”๊ฐ€: AKS ์„ค์ • ๋‹จ๊ณ„ stage("Setup AKS") { container('azure-cli') { withCredentials([azureServicePrincipal('azure-credentials')]) { @@ -57,8 +56,13 @@ podTemplate( echo "=== ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์ƒ์„ฑ ===" kubectl create namespace ${namespace} --dry-run=client -o yaml | kubectl apply -f - - echo "=== ํ˜„์žฌ ์ปจํ…์ŠคํŠธ ํ™•์ธ ===" - kubectl config current-context + echo "=== Image Pull Secret ์ƒ์„ฑ ===" + kubectl create secret docker-registry acr-secret \\ + --docker-server=${props.registry} \\ + --docker-username=acrdigitalgarage02 \\ + --docker-password=\$(az acr credential show --name acrdigitalgarage02 --query passwords[0].value -o tsv) \\ + --namespace=${namespace} \\ + --dry-run=client -o yaml | kubectl apply -f - """ } } @@ -163,22 +167,43 @@ podTemplate( container('azure-cli') { sh """ - echo "=== kubectl ์—ฐ๊ฒฐ ์ƒํƒœ ์žฌํ™•์ธ ===" - kubectl cluster-info - echo "=== Manifest ์ ์šฉ ===" kubectl apply -f smarketing-java/deployment/${manifest} - echo "=== Deployment ๋Œ€๊ธฐ ===" - kubectl -n ${namespace} wait --for=condition=available deployment/member --timeout=300s - kubectl -n ${namespace} wait --for=condition=available deployment/store --timeout=300s - kubectl -n ${namespace} wait --for=condition=available deployment/marketing-content --timeout=300s - kubectl -n ${namespace} wait --for=condition=available deployment/ai-recommend --timeout=300s + echo "=== ๋ฐฐํฌ ์ƒํƒœ ์ฆ‰์‹œ ํ™•์ธ ===" + kubectl -n ${namespace} get deployments + kubectl -n ${namespace} get pods + kubectl -n ${namespace} get events --sort-by='.lastTimestamp' | tail -20 - echo "=== ๋ฐฐํฌ ์ƒํƒœ ํ™•์ธ ===" + echo "=== Pod ์ƒ์„ธ ์ •๋ณด ํ™•์ธ ===" + for pod in \$(kubectl -n ${namespace} get pods -o name); do + echo "=== \$pod ์ƒ์„ธ ์ •๋ณด ===" + kubectl -n ${namespace} describe \$pod + echo "=== \$pod ๋กœ๊ทธ ===" + kubectl -n ${namespace} logs \$pod --tail=50 || echo "๋กœ๊ทธ ์—†์Œ" + echo "================" + done + + echo "=== Deployment ๋Œ€๊ธฐ (30์ดˆ timeout์œผ๋กœ ๋‹จ์ถ•) ===" + timeout 30 kubectl -n ${namespace} wait --for=condition=available deployment/member --timeout=30s || echo "member deployment ๋Œ€๊ธฐ ์‹คํŒจ" + timeout 30 kubectl -n ${namespace} wait --for=condition=available deployment/store --timeout=30s || echo "store deployment ๋Œ€๊ธฐ ์‹คํŒจ" + timeout 30 kubectl -n ${namespace} wait --for=condition=available deployment/marketing-content --timeout=30s || echo "marketing-content deployment ๋Œ€๊ธฐ ์‹คํŒจ" + timeout 30 kubectl -n ${namespace} wait --for=condition=available deployment/ai-recommend --timeout=30s || echo "ai-recommend deployment ๋Œ€๊ธฐ ์‹คํŒจ" + + echo "=== ์ตœ์ข… ๋ฐฐํฌ ์ƒํƒœ ํ™•์ธ ===" kubectl -n ${namespace} get deployments kubectl -n ${namespace} get pods kubectl -n ${namespace} get services + + echo "=== ์‹คํŒจํ•œ Pod๊ฐ€ ์žˆ๋‹ค๋ฉด ์ƒ์„ธ ๋กœ๊ทธ ===" + for pod in \$(kubectl -n ${namespace} get pods --field-selector=status.phase!=Running -o name 2>/dev/null || true); do + if [ ! -z "\$pod" ]; then + echo "=== ์‹คํŒจํ•œ Pod: \$pod ===" + kubectl -n ${namespace} describe \$pod + kubectl -n ${namespace} logs \$pod --previous --tail=50 2>/dev/null || echo "์ด์ „ ๋กœ๊ทธ ์—†์Œ" + kubectl -n ${namespace} logs \$pod --tail=50 2>/dev/null || echo "ํ˜„์žฌ ๋กœ๊ทธ ์—†์Œ" + fi + done """ } }