#!/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"