runtime-role-matrix-live-20.../scripts/validate.sh

90 lines
2.3 KiB
Bash

#!/bin/bash
# 검증 스크립트 - 독립적 검증 실행
set -e
echo "=========================================="
echo " 검증 체크리스트 실행"
echo "=========================================="
echo ""
# 색상 정의
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# 함수 정의
pass() { echo -e "${GREEN}✓ PASS${NC}: $1"; }
fail() { echo -e "${RED}✗ FAIL${NC}: $1"; exit 1; }
warn() { echo -e "${YELLOW}⚠ WARN${NC}: $1"; }
# 1. 변경 파일 검증
echo "[1/5] 변경 파일 검증..."
if git diff --name-only HEAD~1 > /dev/null 2>&1; then
CHANGED_FILES=$(git diff --name-only HEAD~1 | wc -l)
echo " 변경된 파일 수: $CHANGED_FILES"
pass "변경 파일 확인 완료"
else
warn "git 히스토리가 없습니다. 초기 커밋으로 간주합니다."
fi
echo ""
# 2. 테스트 검증
echo "[2/5] 테스트 검증..."
if command -v mvn &> /dev/null; then
echo " Maven 테스트 실행 중..."
if mvn test -q 2>&1 | tail -5; then
pass "테스트 실행 완료"
else
fail "테스트 실패"
fi
else
warn "Maven이 설치되어 있지 않습니다."
fi
echo ""
# 3. 빌드 검증
echo "[3/5] 빌드 검증..."
if command -v mvn &> /dev/null; then
echo " Maven 빌드 실행 중..."
if mvn clean package -DskipTests -q 2>&1 | tail -3; then
pass "빌드 완료"
else
fail "빌드 실패"
fi
else
warn "Maven이 설치되어 있지 않습니다."
fi
echo ""
# 4. CI 파일 검증
echo "[4/5] CI/CD 검증..."
if [ -d ".github/workflows" ]; then
WORKFLOW_COUNT=$(find .github/workflows -name "*.yml" -o -name "*.yaml" | wc -l)
echo " Workflow 파일 수: $WORKFLOW_COUNT"
pass "CI/CD 설정 확인 완료"
else
warn "GitHub Actions 워크플로우가 없습니다."
fi
echo ""
# 5. 보안 검증
echo "[5/5] 보안 검증..."
if [ -f "pom.xml" ]; then
if grep -q "dependency-check-maven" pom.xml; then
echo " OWASP Dependency Check 설정됨"
fi
pass "보안 설정 확인 완료"
else
warn "pom.xml이 없습니다."
fi
echo ""
echo "=========================================="
echo " 검증 완료"
echo "=========================================="
echo ""
echo "상세 보고서 확인:"
echo " - docs/review/VALIDATION_CHECKLIST.md"
echo " - docs/review/EVIDENCE_REPORT.md"