110 lines
3.7 KiB
Bash
110 lines
3.7 KiB
Bash
#!/bin/bash
|
|
# 증적 보고서 생성 스크립트
|
|
# smoke-test.sh 실행 후 이 스크립트를 실행하여 최종 증적 보고서를 생성합니다
|
|
|
|
set -e
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"
|
|
|
|
echo "=========================================="
|
|
echo "증적 보고서 생성"
|
|
echo "=========================================="
|
|
|
|
# smoke-test-report.json이 있는지 확인
|
|
if [ ! -f "$SCRIPT_DIR/smoke-test-report.json" ]; then
|
|
echo "오류: smoke-test-report.json을 찾을 수 없습니다."
|
|
echo "먼저 ./verification/smoke-test.sh를 실행해주세요."
|
|
exit 1
|
|
fi
|
|
|
|
# 변경 파일 목록
|
|
echo ""
|
|
echo "1. 변경 파일 수집..."
|
|
if [ -f "$SCRIPT_DIR/changed-files.txt" ]; then
|
|
CHANGED_FILES=$(cat "$SCRIPT_DIR/changed-files.txt" | tr '\n' ',' | sed 's/,$//')
|
|
else
|
|
CHANGED_FILES=""
|
|
fi
|
|
|
|
# Git 정보 수집
|
|
echo "2. Git 정보 수집..."
|
|
cd "$PROJECT_ROOT"
|
|
GIT_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown")
|
|
GIT_COMMIT=$(git rev-parse HEAD 2>/dev/null || echo "unknown")
|
|
GIT_COMMIT_MSG=$(git log -1 --pretty=%B 2>/dev/null | head -1 || echo "unknown")
|
|
|
|
# 빌드 정보 수집
|
|
echo "3. 빌드 정보 수집..."
|
|
if [ -f "$PROJECT_ROOT/pom.xml" ]; then
|
|
BUILD_TOOL="maven"
|
|
PROJECT_VERSION=$(grep -A1 '<artifactId>' "$PROJECT_ROOT/pom.xml" | grep -A1 'runtime-role-matrix' | grep '<version>' | sed 's/.*<version>//' | sed 's/<\/version>//' | head -1)
|
|
elif [ -f "$PROJECT_ROOT/build.gradle" ]; then
|
|
BUILD_TOOL="gradle"
|
|
PROJECT_VERSION=$(grep 'version' "$PROJECT_ROOT/build.gradle" | head -1 | sed 's/.*version.*//' | tr -d "'\" " || echo "unknown")
|
|
else
|
|
BUILD_TOOL="unknown"
|
|
PROJECT_VERSION="unknown"
|
|
fi
|
|
|
|
# 테스트 결과 수집
|
|
echo "4. 테스트 결과 수집..."
|
|
UNIT_TEST_RESULT=$(cat "$SCRIPT_DIR/smoke-test-report.json" | grep -A1 'unit_tests' | grep 'status' | cut -d'"' -f4)
|
|
COMPILATION_RESULT=$(cat "$SCRIPT_DIR/smoke-test-report.json" | grep -A1 'compilation' | grep 'status' | cut -d'"' -f4)
|
|
|
|
# 최종 증적 보고서 생성
|
|
echo "5. 증적 보고서 생성..."
|
|
|
|
cat > "$SCRIPT_DIR/final-evidence-report.json" << EOF
|
|
{
|
|
"evidence_report": {
|
|
"report_id": "RRL-$(date +%Y%m%d)-$(date +%H%M%S)",
|
|
"project_name": "runtime-role-matrix-live",
|
|
"project_version": "${PROJECT_VERSION:-unknown}",
|
|
"build_tool": "${BUILD_TOOL}",
|
|
"generated_at": "$(date -u +"%Y-%m-%dT%H:%M:%SZ")",
|
|
"reviewer": "검증 담당자",
|
|
"review_type": "smoke_test"
|
|
},
|
|
"git_information": {
|
|
"branch": "${GIT_BRANCH}",
|
|
"commit_hash": "${GIT_COMMIT}",
|
|
"commit_message": "${GIT_COMMIT_MSG}"
|
|
},
|
|
"changed_files": {
|
|
"count": $(echo "$CHANGED_FILES" | tr ',' '\n' | grep -c . 2>/dev/null || echo 0),
|
|
"files": [$(echo "$CHANGED_FILES" | sed "s/,/","/g" | sed "s/^/\"/;s/$/\"/")]
|
|
},
|
|
"verification_results": {
|
|
"compilation": "${COMPILATION_RESULT:-unknown}",
|
|
"unit_tests": "${UNIT_TEST_RESULT:-unknown}",
|
|
"smoke_test_summary": $(cat "$SCRIPT_DIR/smoke-test-report.json" | grep -A6 '"summary"')
|
|
},
|
|
"operational_risk_assessment": {
|
|
"deployment_risk": "medium",
|
|
"monitoring_risk": "low",
|
|
"data_risk": "medium",
|
|
"security_risk": "low",
|
|
"overall_risk": "medium"
|
|
},
|
|
"approval": {
|
|
"status": "pending",
|
|
"approved_by": null,
|
|
"approved_at": null,
|
|
"comments": null
|
|
}
|
|
}
|
|
EOF
|
|
|
|
echo ""
|
|
echo "=========================================="
|
|
echo "증적 보고서 생성 완료"
|
|
echo "=========================================="
|
|
echo ""
|
|
echo "생성된 파일:"
|
|
echo " - $SCRIPT_DIR/smoke-test-report.json"
|
|
echo " - $SCRIPT_DIR/final-evidence-report.json"
|
|
echo " - $SCRIPT_DIR/changed-files.txt"
|
|
echo ""
|
|
echo "최종 증적 보고서 내용:"
|
|
cat "$SCRIPT_DIR/final-evidence-report.json"
|