mirror of
https://github.com/cna-bootcamp/phonebill.git
synced 2026-06-12 19:49:10 +00:00
Jenkins CI/CD 파이프라인 업데이트
- Jenkinsfile 개선: SonarQube 분석, Quality Gate 추가 - 환경별 설정 파일 업데이트 (dev/staging/prod) - Kustomize base 및 overlay 파일 정리 - prod 환경 overlay 파일 추가 - 배포 스크립트 및 검증 스크립트 업데이트 - 파이프라인 가이드 문서 업데이트 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -4,35 +4,32 @@ set -e
|
||||
ENVIRONMENT=${1:-dev}
|
||||
IMAGE_TAG=${2:-latest}
|
||||
|
||||
echo "🚀 Deploying to ${ENVIRONMENT} environment with tag ${IMAGE_TAG}..."
|
||||
|
||||
# 환경별 설정 파일 로드
|
||||
source "$(dirname "$0")/../config/deploy_env_vars_${ENVIRONMENT}"
|
||||
echo "🚀 Starting deployment to ${ENVIRONMENT} environment..."
|
||||
|
||||
# 환경별 이미지 태그 업데이트
|
||||
cd "$(dirname "$0")/../kustomize/overlays/${ENVIRONMENT}"
|
||||
cd deployment/cicd/kustomize/overlays/${ENVIRONMENT}
|
||||
|
||||
# 서비스 목록
|
||||
# 서비스 목록 (공백으로 구분)
|
||||
services="api-gateway user-service bill-service product-service kos-mock"
|
||||
|
||||
# 각 서비스 이미지 태그 업데이트
|
||||
for service in $services; do
|
||||
echo "📦 Updating image tag for ${service}..."
|
||||
kustomize edit set image docker.io/hiondal/$service:${ENVIRONMENT}-${IMAGE_TAG}
|
||||
kustomize edit set image docker.io/hiondal/$service=docker.io/hiondal/$service:${ENVIRONMENT}-${IMAGE_TAG}
|
||||
done
|
||||
|
||||
# 배포 실행
|
||||
echo "📋 Applying Kustomize manifests..."
|
||||
echo "📤 Applying Kubernetes manifests..."
|
||||
kubectl apply -k .
|
||||
|
||||
# 배포 상태 확인
|
||||
echo "⏳ Waiting for deployments to be ready..."
|
||||
for service in $services; do
|
||||
echo " Checking ${service}..."
|
||||
kubectl rollout status deployment/$service -n ${namespace} --timeout=300s || echo " ⚠️ Timeout waiting for ${service}"
|
||||
kubectl rollout status deployment/$service -n phonebill --timeout=300s
|
||||
done
|
||||
|
||||
echo "✅ Deployment completed successfully!"
|
||||
echo ""
|
||||
echo "📊 Current status:"
|
||||
kubectl get pods -n ${namespace}
|
||||
echo "📊 Current deployment status:"
|
||||
kubectl get pods -n phonebill
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
#!/bin/bash
|
||||
# Base 리소스 누락 검증 스크립트
|
||||
# Base 리소스 누락 검증 스크립트 (phonebill)
|
||||
|
||||
echo "🔍 Phonebill Base 리소스 누락 검증 시작..."
|
||||
echo "🔍 phonebill Base 리소스 누락 검증 시작..."
|
||||
|
||||
BASE_DIR="deployment/cicd/kustomize/base"
|
||||
MISSING_RESOURCES=0
|
||||
REQUIRED_FILES=("deployment.yaml" "service.yaml")
|
||||
OPTIONAL_FILES=("cm-" "secret-")
|
||||
|
||||
# 1. 각 서비스 디렉토리의 파일 확인
|
||||
echo ""
|
||||
@@ -15,33 +17,24 @@ for dir in $BASE_DIR/*/; do
|
||||
echo "=== $service ==="
|
||||
|
||||
# 필수 파일 확인
|
||||
if [ -f "$dir/deployment.yaml" ]; then
|
||||
echo " ✅ deployment.yaml"
|
||||
else
|
||||
echo " ❌ MISSING REQUIRED: deployment.yaml"
|
||||
((MISSING_RESOURCES++))
|
||||
fi
|
||||
for required in "${REQUIRED_FILES[@]}"; do
|
||||
if [ -f "$dir$required" ]; then
|
||||
echo " ✅ $required"
|
||||
else
|
||||
echo " ❌ MISSING REQUIRED: $required"
|
||||
((MISSING_RESOURCES++))
|
||||
fi
|
||||
done
|
||||
|
||||
if [ -f "$dir/service.yaml" ]; then
|
||||
echo " ✅ service.yaml"
|
||||
else
|
||||
echo " ❌ MISSING REQUIRED: service.yaml"
|
||||
((MISSING_RESOURCES++))
|
||||
fi
|
||||
|
||||
# ConfigMap 확인
|
||||
if ls "$dir"cm-*.yaml 1> /dev/null 2>&1; then
|
||||
for file in "$dir"cm-*.yaml; do
|
||||
echo " ✅ $(basename "$file")"
|
||||
done
|
||||
fi
|
||||
|
||||
# Secret 확인
|
||||
if ls "$dir"secret-*.yaml 1> /dev/null 2>&1; then
|
||||
for file in "$dir"secret-*.yaml; do
|
||||
echo " ✅ $(basename "$file")"
|
||||
done
|
||||
fi
|
||||
# 선택적 파일 확인
|
||||
for optional in "${OPTIONAL_FILES[@]}"; do
|
||||
files=($(ls "$dir"$optional*".yaml" 2>/dev/null))
|
||||
if [ ${#files[@]} -gt 0 ]; then
|
||||
for file in "${files[@]}"; do
|
||||
echo " ✅ $(basename "$file")"
|
||||
done
|
||||
fi
|
||||
done
|
||||
echo ""
|
||||
fi
|
||||
done
|
||||
@@ -50,11 +43,15 @@ done
|
||||
echo "2. Common 리소스 확인:"
|
||||
COMMON_DIR="$BASE_DIR/common"
|
||||
if [ -d "$COMMON_DIR" ]; then
|
||||
for file in "$COMMON_DIR"/*.yaml; do
|
||||
if [ -f "$file" ]; then
|
||||
common_files=($(ls "$COMMON_DIR"/*.yaml 2>/dev/null))
|
||||
if [ ${#common_files[@]} -gt 0 ]; then
|
||||
for file in "${common_files[@]}"; do
|
||||
echo " ✅ common/$(basename "$file")"
|
||||
fi
|
||||
done
|
||||
done
|
||||
else
|
||||
echo " ❌ Common 디렉토리에 YAML 파일이 없습니다"
|
||||
((MISSING_RESOURCES++))
|
||||
fi
|
||||
else
|
||||
echo " ❌ Common 디렉토리가 없습니다"
|
||||
((MISSING_RESOURCES++))
|
||||
@@ -65,8 +62,9 @@ echo ""
|
||||
echo "3. kustomization.yaml 리소스 검증:"
|
||||
if [ -f "$BASE_DIR/kustomization.yaml" ]; then
|
||||
while IFS= read -r line; do
|
||||
# resources 섹션의 YAML 파일 경로 추출
|
||||
if [[ $line =~ ^[[:space:]]*-[[:space:]]*([^#]+\.yaml)[[:space:]]*$ ]]; then
|
||||
resource_path=$(echo "${BASH_REMATCH[1]}" | xargs)
|
||||
resource_path=$(echo "${BASH_REMATCH[1]}" | xargs) # 공백 제거
|
||||
full_path="$BASE_DIR/$resource_path"
|
||||
if [ -f "$full_path" ]; then
|
||||
echo " ✅ $resource_path"
|
||||
|
||||
Reference in New Issue
Block a user