From c35ac82348d89ef56782e027f6151230364a86e7 Mon Sep 17 00:00:00 2001 From: forge-bot Date: Tue, 14 Jul 2026 05:51:40 +0000 Subject: [PATCH] =?UTF-8?q?=EA=B2=80=EC=A6=9D=20=EC=B2=B4=ED=81=AC?= =?UTF-8?q?=EB=A6=AC=EC=8A=A4=ED=8A=B8=20=EC=B5=9C=EC=8B=A0=20reviewer=20?= =?UTF-8?q?=EA=B2=80=EC=A6=9D=20(role-reviewer-reverify-550-001)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- verification/run_verification.sh | 153 +++++++++++++++++++++++++++++++ 1 file changed, 153 insertions(+) create mode 100644 verification/run_verification.sh diff --git a/verification/run_verification.sh b/verification/run_verification.sh new file mode 100644 index 0000000..a97471d --- /dev/null +++ b/verification/run_verification.sh @@ -0,0 +1,153 @@ +#!/bin/bash +# 검증 스크립트 - runtime-role-reverify-202607140550 + +set -e + +echo "==========================================" +echo " 검증 체크리스트 실행" +echo " 프로젝트: runtime-role-reverify-202607140550" +echo "==========================================" +echo "" + +# 색상 정의 +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +NC='\033[0m' # No Color + +# 카운터 +PASS=0 +FAIL=0 +SKIP=0 + +# 검증 함수 +check_pass() { + echo -e "${GREEN}[PASS]${NC} $1" + ((PASS++)) +} + +check_fail() { + echo -e "${RED}[FAIL]${NC} $1" + ((FAIL++)) +} + +check_skip() { + echo -e "${YELLOW}[SKIP]${NC} $1" + ((SKIP++)) +} + +echo "=== 1. 산출물 검증 ===" + +# D-01: 소스 코드 구조 +if [ -d "src/main/java" ] && [ -d "src/test/java" ]; then + check_pass "D-01: 소스 코드 구조 완전성" +else + check_fail "D-01: 소스 코드 구조 완전성" +fi + +# D-02: 설정 파일 +if [ -f "pom.xml" ] || [ -f "build.gradle" ]; then + check_pass "D-02: 설정 파일 존재성" +else + check_fail "D-02: 설정 파일 존재성" +fi + +# D-03: 문서 +if [ -f "README.md" ]; then + check_pass "D-03: 문서 존재성" +else + check_skip "D-03: 문서 존재성 (README.md 없음)" +fi + +# D-04: 의존성 +if [ -f "pom.xml" ]; then + if grep -q "" pom.xml; then + check_pass "D-04: 의존성 선언 완전성" + else + check_fail "D-04: 의존성 선언 완전성" + fi +else + check_skip "D-04: 의존성 선언 (pom.xml 없음)" +fi + +# D-05: 빌드 스크립트 +if [ -f "pom.xml" ] || [ -f "build.gradle" ] || [ -f "Makefile" ]; then + check_pass "D-05: 빌드 스크립트 존재" +else + check_fail "D-05: 빌드 스크립트 존재" +fi + +echo "" +echo "=== 2. 테스트 검증 ===" + +# T-01: 단위 테스트 +if find . -name "*Test.java" -type f 2>/dev/null | grep -q .; then + check_pass "T-01: 단위 테스트 존재" +else + check_skip "T-01: 단위 테스트 존재 (테스트 파일 없음)" +fi + +# T-02: 통합 테스트 +if find . -name "*IT.java" -type f 2>/dev/null | grep -q . || [ -d "src/test/integration" ]; then + check_pass "T-02: 통합 테스트 존재" +else + check_skip "T-02: 통합 테스트 존재 (통합 테스트 없음)" +fi + +# T-03: 테스트 자동화 +if [ -f "pom.xml" ]; then + if grep -q "maven-surefire-plugin" pom.xml || grep -q "maven-surefire-plugin" pom.xml; then + check_pass "T-03: 테스트 자동화 설정" + else + check_skip "T-03: 테스트 자동화 설정 (Surefire 플러그인 없음)" + fi +else + check_skip "T-03: 테스트 자동화 (pom.xml 없음)" +fi + +echo "" +echo "=== 3. CI/CD 검증 ===" + +# C-01: CI 파이프라인 +if [ -f ".github/workflows/ci.yml" ] || [ -f ".github/workflows/build.yml" ] || [ -f "Jenkinsfile" ] || [ -f ".gitlab-ci.yml" ]; then + check_pass "C-01: CI 파이프라인 정의 파일 존재" +else + check_skip "C-01: CI 파이프라인 정의 파일 존재 (CI 설정 없음)" +fi + +echo "" +echo "=== 4. 운영 리스크 검증 ===" + +# O-01: 로깅 설정 +if [ -f "src/main/resources/logback.xml" ] || [ -f "src/main/resources/logback-spring.xml" ] || [ -f "src/main/resources/log4j2.xml" ]; then + check_pass "O-01: 로깅 전략 정의" +else + check_skip "O-01: 로깅 전략 정의 (로깅 설정 없음)" +fi + +# O-02: 환경별 설정 +if ls src/main/resources/application-*.properties src/main/resources/application-*.yml src/main/resources/application-*.yaml 2>/dev/null | grep -q .; then + check_pass "O-02: 환경별 설정 분리" +else + check_skip "O-02: 환경별 설정 분리 (프로파일 설정 없음)" +fi + +echo "" +echo "==========================================" +echo " 검증 결과 요약" +echo "==========================================" +echo -e "${GREEN}통과:${NC} $PASS" +echo -e "${RED}실패:${NC} $FAIL" +echo -e "${YELLOW}건너뜀:${NC} $SKIP" +echo "" + +TOTAL=$((PASS + FAIL + SKIP)) +if [ $TOTAL -gt 0 ]; then + PASS_RATE=$((PASS * 100 / TOTAL)) + echo "통과율: $PASS_RATE%" +fi + +echo "==========================================" + +# 결과 반환 +exit 0