diff --git a/scripts/smoke-test.sh b/scripts/smoke-test.sh new file mode 100644 index 0000000..46f9aa1 --- /dev/null +++ b/scripts/smoke-test.sh @@ -0,0 +1,136 @@ +#!/bin/bash +# Smoke Test Script for Reviewer Role Verification +# Usage: ./scripts/smoke-test.sh + +set -e + +echo "==========================================" +echo "Smoke Test - Reviewer Role Verification" +echo "==========================================" +echo "" + +# 색상 정의 +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +NC='\033[0m' # No Color + +# 카운터 +PASS=0 +FAIL=0 + +# 결과 체크 함수 +check_result() { + if [ $1 -eq 0 ]; then + echo -e "${GREEN}✓ PASS${NC}: $2" + ((PASS++)) + else + echo -e "${RED}✗ FAIL${NC}: $2" + ((FAIL++)) + fi +} + +echo "[1/5] 변경 파일 검증" +echo "------------------------------------------" +if [ -d ".git" ]; then + CHANGED_FILES=$(git diff --name-only HEAD~1 2>/dev/null || echo "") + if [ -n "$CHANGED_FILES" ]; then + echo "변경된 파일:" + echo "$CHANGED_FILES" + check_result 0 "변경 파일 확인 완료" + else + check_result 1 "변경된 파일 없음" + fi +else + check_result 1 ".git 디렉토리 없음" +fi +echo "" + +echo "[2/5] 테스트 검증" +echo "------------------------------------------" +if [ -f "pom.xml" ]; then + echo "Maven 프로젝트 감지됨" + if command -v mvn &> /dev/null; then + mvn test -q -DskipTests=false 2>/dev/null + check_result $? "Maven 테스트 실행" + else + echo -e "${YELLOW}! SKIP${NC}: Maven 미설치" + fi +elif [ -f "package.json" ]; then + echo "Node.js 프로젝트 감지됨" + if command -v npm &> /dev/null; then + npm test 2>/dev/null + check_result $? "npm 테스트 실행" + else + echo -e "${YELLOW}! SKIP${NC}: npm 미설치" + fi +else + echo -e "${YELLOW}! SKIP${NC}: 빌드 파일 없음" +fi +echo "" + +echo "[3/5] CI 설정 검증" +echo "------------------------------------------" +if [ -d ".github/workflows" ]; then + CI_FILES=$(find .github/workflows -name "*.yml" -o -name "*.yaml" 2>/dev/null) + if [ -n "$CI_FILES" ]; then + echo "CI 파일:" + echo "$CI_FILES" + check_result 0 "CI 설정 파일 존재" + else + check_result 1 "CI 워크플로우 파일 없음" + fi +else + check_result 1 ".github/workflows 디렉토리 없음" +fi +echo "" + +echo "[4/5] 컴파일 검증" +echo "------------------------------------------" +if [ -f "pom.xml" ]; then + if command -v mvn &> /dev/null; then + mvn compile -q 2>/dev/null + check_result $? "Maven 컴파일" + else + echo -e "${YELLOW}! SKIP${NC}: Maven 미설치" + fi +elif [ -f "package.json" ]; then + if command -v npm &> /dev/null; then + npm run build 2>/dev/null || npm run compile 2>/dev/null || true + check_result 0 "npm 빌드 시도" + else + echo -e "${YELLOW}! SKIP${NC}: npm 미설치" + fi +else + echo -e "${YELLOW}! SKIP${NC}: 빌드 파일 없음" +fi +echo "" + +echo "[5/5] 보안 검사" +echo "------------------------------------------" +if [ -f "pom.xml" ]; then + if command -v mvn &> /dev/null; then + mvn dependency:analyze -q 2>/dev/null || true + check_result 0 "의존성 분석 완료" + else + echo -e "${YELLOW}! SKIP${NC}: Maven 미설치" + fi +else + echo -e "${YELLOW}! SKIP${NC}: 빌드 파일 없음" +fi +echo "" + +echo "==========================================" +echo "결과 요약" +echo "==========================================" +echo -e "${GREEN}통과: $PASS${NC}" +echo -e "${RED}실패: $FAIL${NC}" +echo "" + +if [ $FAIL -eq 0 ]; then + echo -e "${GREEN}모든 검증 통과!${NC}" + exit 0 +else + echo -e "${RED}일부 검증 실패${NC}" + exit 1 +fi