Reviewer 역할 검증 보고서 smoke #5

Merged
forge-bot merged 5 commits from forge/role-reviewer-live-v4-001-attempt-1-run-cb5137e23d3c into main 2026-07-14 08:48:43 +00:00
Showing only changes of commit d8474c015a - Show all commits

147
scripts/verify-smoke.sh Normal file
View file

@ -0,0 +1,147 @@
#!/bin/bash
# Smoke Verification Script
# Usage: ./scripts/verify-smoke.sh
set -e
PROJECT_NAME="runtime-role-matrix-live-202607141522-v4"
REPORT_DIR="docs/reviewer/reports"
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'
log_info() { echo -e "${GREEN}[INFO]${NC} $1"; }
log_warn() { echo -e "${YELLOW}[WARN]${NC} $1"; }
log_error() { echo -e "${RED}[ERROR]${NC} $1"; }
# Create report directory
mkdir -p "${REPORT_DIR}"
log_info "Starting Smoke Verification for ${PROJECT_NAME}"
# 1. Verify Changed Files
echo ""
log_info "=== 1. Changed Files Verification ==="
if [ -d ".git" ]; then
CHANGED_FILES=$(git diff --name-only HEAD~1 2>/dev/null || echo "")
if [ -n "${CHANGED_FILES}" ]; then
echo "Changed files:"
echo "${CHANGED_FILES}" | while read -r file; do
echo " - ${file}"
done
echo "CHANGED_FILES=${CHANGED_FILES}" > "${REPORT_DIR}/changed_files_${TIMESTAMP}.txt"
else
log_warn "No changed files found"
fi
else
log_warn "Not a git repository, skipping changed files check"
fi
# 2. Run Tests
echo ""
log_info "=== 2. Test Verification ==="
if [ -f "pom.xml" ]; then
log_info "Running Maven tests..."
mvn test -q 2>&1 | tee "${REPORT_DIR}/test_results_${TIMESTAMP}.txt"
TEST_RESULT=$?
if [ ${TEST_RESULT} -eq 0 ]; then
log_info "All tests passed"
else
log_error "Some tests failed"
fi
elif [ -f "package.json" ]; then
log_info "Running npm tests..."
npm test 2>&1 | tee "${REPORT_DIR}/test_results_${TIMESTAMP}.txt"
TEST_RESULT=$?
else
log_warn "No test framework detected"
TEST_RESULT=0
fi
# 3. CI Verification
echo ""
log_info "=== 3. CI Verification ==="
if [ -f ".github/workflows/ci.yml" ] || [ -f ".gitlab-ci.yml" ] || [ -f "Jenkinsfile" ]; then
log_info "CI configuration found"
echo "CI_CONFIG=found" > "${REPORT_DIR}/ci_status_${TIMESTAMP}.txt"
else
log_warn "No CI configuration found"
echo "CI_CONFIG=not_found" > "${REPORT_DIR}/ci_status_${TIMESTAMP}.txt"
fi
# 4. Build Verification
echo ""
log_info "=== 4. Build Verification ==="
if [ -f "pom.xml" ]; then
log_info "Building with Maven..."
mvn clean package -DskipTests -q 2>&1 | tee "${REPORT_DIR}/build_results_${TIMESTAMP}.txt"
BUILD_RESULT=$?
if [ ${BUILD_RESULT} -eq 0 ]; then
log_info "Build successful"
else
log_error "Build failed"
fi
elif [ -f "package.json" ]; then
log_info "Building with npm..."
npm run build 2>&1 | tee "${REPORT_DIR}/build_results_${TIMESTAMP}.txt"
BUILD_RESULT=$?
else
log_warn "No build configuration detected"
BUILD_RESULT=0
fi
# 5. Generate Summary Report
echo ""
log_info "=== 5. Generating Summary Report ==="
cat > "${REPORT_DIR}/smoke_summary_${TIMESTAMP}.json" << EOF
{
"project": "${PROJECT_NAME}",
"timestamp": "${TIMESTAMP}",
"verification_type": "smoke",
"results": {
"changed_files": {
"status": "verified",
"count": $(echo "${CHANGED_FILES}" | grep -c "^" || echo 0)
},
"tests": {
"status": $([ ${TEST_RESULT} -eq 0 ] && echo "passed" || echo "failed"),
"exit_code": ${TEST_RESULT}
},
"ci": {
"status": "verified"
},
"build": {
"status": $([ ${BUILD_RESULT} -eq 0 ] && echo "success" || echo "failed"),
"exit_code": ${BUILD_RESULT}
}
},
"overall_status": $([ ${TEST_RESULT} -eq 0 ] && [ ${BUILD_RESULT} -eq 0 ] && echo "passed" || echo "failed"),
"report_files": {
"changed_files": "${REPORT_DIR}/changed_files_${TIMESTAMP}.txt",
"test_results": "${REPORT_DIR}/test_results_${TIMESTAMP}.txt",
"ci_status": "${REPORT_DIR}/ci_status_${TIMESTAMP}.txt",
"build_results": "${REPORT_DIR}/build_results_${TIMESTAMP}.txt"
}
}
EOF
log_info "Summary report: ${REPORT_DIR}/smoke_summary_${TIMESTAMP}.json"
# Final status
echo ""
if [ ${TEST_RESULT} -eq 0 ] && [ ${BUILD_RESULT} -eq 0 ]; then
log_info "=== SMOKE VERIFICATION PASSED ==="
exit 0
else
log_error "=== SMOKE VERIFICATION FAILED ==="
exit 1
fi