#!/bin/bash echo "πŸ” Jenkins CI/CD ꡬ성 μ΅œμ’… 검증 μ‹œμž‘..." # 1. 파일 개수 확인 echo "1. 파일 개수 검증..." OVERLAY_FILES=$(find deployment/cicd/kustomize/overlays -name "*.yaml" | wc -l) if [ $OVERLAY_FILES -eq 36 ]; then echo "βœ… Overlay 파일 개수 정상 (36개)" else echo "❌ Overlay 파일 개수 였λ₯˜ ($OVERLAY_FILES개, 36κ°œμ—¬μ•Ό 함)" fi # 2. DEV ingress host 검증 echo "2. DEV Ingress Host 검증..." BASE_HOST=$(grep "host:" deployment/cicd/kustomize/base/common/ingress.yaml | awk '{print $3}') DEV_HOST=$(grep "host:" deployment/cicd/kustomize/overlays/dev/ingress-patch.yaml | awk '{print $3}') if [ "$BASE_HOST" = "$DEV_HOST" ]; then echo "βœ… DEV Ingress Host 정상 ($DEV_HOST)" else echo "❌ DEV Ingress Host 였λ₯˜ (base: $BASE_HOST, dev: $DEV_HOST)" fi # 3. Kustomize λΉŒλ“œ ν…ŒμŠ€νŠΈ echo "3. Kustomize λΉŒλ“œ ν…ŒμŠ€νŠΈ..." for env in dev staging prod; do if kubectl kustomize deployment/cicd/kustomize/overlays/$env > /dev/null 2>&1; then echo "βœ… $env ν™˜κ²½ λΉŒλ“œ 성곡" else echo "❌ $env ν™˜κ²½ λΉŒλ“œ μ‹€νŒ¨" kubectl kustomize deployment/cicd/kustomize/overlays/$env 2>&1 | head -3 fi done # 4. Jenkinsfile JDK 버전 확인 echo "4. Jenkinsfile JDK 버전 검증..." if grep -q "gradle:jdk21" deployment/cicd/Jenkinsfile; then echo "βœ… JDK 21 버전 정상" else echo "❌ JDK 버전 확인 ν•„μš”" fi # 5. Secret stringData μ‚¬μš© 확인 echo "5. Secret stringData μ‚¬μš© 검증..." if grep -r "stringData:" deployment/cicd/kustomize/overlays/*/secret-*-patch.yaml > /dev/null; then echo "βœ… stringData μ‚¬μš© 정상" else echo "❌ stringData μ‚¬μš© 확인 ν•„μš”" fi # 6. patches 문법 확인 (patchesStrategicMerge κΈˆμ§€) echo "6. Kustomization patches 문법 검증..." if grep -r "patchesStrategicMerge:" deployment/cicd/kustomize/overlays/*/kustomization.yaml > /dev/null; then echo "❌ κΈˆμ§€λœ patchesStrategicMerge μ‚¬μš© 발견" else echo "βœ… patches 문법 정상" fi # 7. ν™˜κ²½λ³„ replicas μ„€μ • 확인 echo "7. ν™˜κ²½λ³„ replicas μ„€μ • 검증..." DEV_REPLICAS=$(grep "replicas:" deployment/cicd/kustomize/overlays/dev/deployment-user-service-patch.yaml | awk '{print $2}') STAGING_REPLICAS=$(grep "replicas:" deployment/cicd/kustomize/overlays/staging/deployment-user-service-patch.yaml | awk '{print $2}') PROD_REPLICAS=$(grep "replicas:" deployment/cicd/kustomize/overlays/prod/deployment-user-service-patch.yaml | awk '{print $2}') if [ "$DEV_REPLICAS" = "1" ] && [ "$STAGING_REPLICAS" = "2" ] && [ "$PROD_REPLICAS" = "3" ]; then echo "βœ… ν™˜κ²½λ³„ replicas μ„€μ • 정상 (dev:1, staging:2, prod:3)" else echo "❌ ν™˜κ²½λ³„ replicas μ„€μ • 확인 ν•„μš” (dev:$DEV_REPLICAS, staging:$STAGING_REPLICAS, prod:$PROD_REPLICAS)" fi # 8. μ„œλΉ„μŠ€ λ°°μ—΄ 검증 echo "8. Jenkinsfile μ„œλΉ„μŠ€ λ°°μ—΄ 검증..." SERVICES_COUNT=$(grep "def services = \[" deployment/cicd/Jenkinsfile | grep -o "'" | wc -l) if [ $SERVICES_COUNT -eq 10 ]; then # 5개 μ„œλΉ„μŠ€ * 2 (μ‹œμž‘/끝 λ”°μ˜΄ν‘œ) echo "βœ… μ„œλΉ„μŠ€ λ°°μ—΄ 정상 (5개 μ„œλΉ„μŠ€)" else echo "❌ μ„œλΉ„μŠ€ λ°°μ—΄ 확인 ν•„μš”" fi echo "" echo "🎯 검증 μ™„λ£Œ!" echo "" echo "πŸ“‹ μΆ”κ°€ μˆ˜λ™ 확인사항:" echo " - Jenkins Credentials μ„€μ • (azure-credentials, acr-credentials, sonarqube-token)" echo " - SonarQube Quality Gate μ„€μ •" echo " - ν”„λ‘œλ•μ…˜ ν™˜κ²½ νŒ¨μŠ€μ›Œλ“œ λ³€κ²½" echo " - SSL μΈμ¦μ„œ μ„€μ •"