#!/bin/bash # 검증 자동화 스크립트 # 프로젝트: runtime-role-reverify-202607140530 set -e echo "==========================================" echo " 전환 결과 검증 스크립트" echo " 프로젝트: runtime-role-reverify-202607140530" echo "==========================================" echo "" # 색상 정의 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # No Color # 카운터 PASS=0 FAIL=0 WARN=0 # 결과 기록 함수 pass() { echo -e "${GREEN}[PASS]${NC} $1" ((PASS++)) } fail() { echo -e "${RED}[FAIL]${NC} $1" ((FAIL++)) } warn() { echo -e "${YELLOW}[WARN]${NC} $1" ((WARN++)) } info() { echo -e "[INFO] $1" } echo "==========================================" echo " 1. 산출물 검증" echo "==========================================" # Java 소스 파일 존재 확인 if find . -name "*.java" -type f | grep -q .; then JAVA_COUNT=$(find . -name "*.java" -type f | wc -l) pass "Java 소스 파일 발견: $JAVA_COUNT개" else fail "Java 소스 파일 없음" fi # pom.xml 존재 확인 if [ -f "pom.xml" ]; then pass "pom.xml 존재 확인" else fail "pom.xml 없음" fi # application.yml 존재 확인 if [ -f "src/main/resources/application.yml" ]; then pass "application.yml 존재 확인" else warn "application.yml 없음 (선택적)" fi echo "" echo "==========================================" echo " 2. 테스트 검증" echo "==========================================" # 테스트 파일 존재 확인 if find . -name "*Test.java" -type f | grep -q .; then TEST_COUNT=$(find . -name "*Test.java" -type f | wc -l) pass "테스트 파일 발견: $TEST_COUNT개" else warn "테스트 파일 없음" fi # Maven 테스트 실행 echo "Maven 테스트 실행 중..." if mvn test -q -DskipTests=false > /dev/null 2>&1; then pass "Maven 테스트 성공" else fail "Maven 테스트 실패" fi echo "" echo "==========================================" echo " 3. CI/CD 검증" echo "==========================================" # GitHub Actions 워크플로우 확인 if [ -d ".github/workflows" ]; then WORKFLOW_COUNT=$(find .github/workflows -name "*.yml" -o -name "*.yaml" | wc -l) pass "GitHub Actions 워크플로우 발견: $WORKFLOW_COUNT개" else warn "GitHub Actions 워크플로우 없음" fi # Maven 빌드 검증 if mvn clean package -DskipTests -q > /dev/null 2>&1; then pass "Maven 빌드 성공" if [ -f "target/*.jar" ]; then JAR_COUNT=$(find target -name "*.jar" | wc -l) pass "산출 JAR 파일: $JAR_COUNT개" fi else fail "Maven 빌드 실패" fi echo "" echo "==========================================" echo " 4. 운영 리스크 검증" echo "==========================================" # Java 버전 확인 JAVA_VERSION=$(java -version 2>&1 | head -1 | cut -d'"' -f2) if [[ "$JAVA_VERSION" == 17* ]] || [[ "$JAVA_VERSION" == 21* ]] || [[ "$JAVA_VERSION" == 11* ]]; then pass "Java 버전 (LTS): $JAVA_VERSION" else warn "Java 버전 확인 필요: $JAVA_VERSION" fi # Spring Boot 버전 확인 (pom.xml에서) if grep -q "spring-boot-starter-parent" pom.xml; then SB_VERSION=$(grep -A1 "spring-boot-starter-parent" pom.xml | grep "" | sed 's/.*\([^<]*\)<\/version>.*/\1/') pass "Spring Boot 버전: $SB_VERSION" else warn "Spring Boot parent 없음" fi echo "" echo "==========================================" echo " 검증 결과 요약" echo "==========================================" echo -e "${GREEN}통과: $PASS${NC}" echo -e "${RED}실패: $FAIL${NC}" echo -e "${YELLOW}경고: $WARN${NC}" echo "" if [ $FAIL -eq 0 ]; then echo -e "${GREEN}최종 판정: 승인${NC}" exit 0 else echo -e "${RED}최종 판정: 보류 (수정 필요)${NC}" exit 1 fi