fix template, remove okr, use casan.*
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
#!/usr/bin/env bash
|
||||
set -uo pipefail
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
source "$SCRIPT_DIR/casan-paths.sh"
|
||||
ROOT="$CASAN_APP_ROOT"
|
||||
MANIFEST_TOOL="$SCRIPT_DIR/project_manifest.py"
|
||||
PASS=0 FAIL=0 SKIP=0
|
||||
|
||||
manifest_args=(--root "$ROOT")
|
||||
[[ -n "${CASAN_PROJECT_MANIFEST:-}" ]] && manifest_args+=(--manifest "$CASAN_PROJECT_MANIFEST")
|
||||
[[ -n "${CASAN_PROJECT_ID:-}" ]] && manifest_args+=(--project "$CASAN_PROJECT_ID")
|
||||
|
||||
run() {
|
||||
local name="$1"; shift
|
||||
echo "==> $name"
|
||||
if "$@"; then
|
||||
echo "PROJECT_GATE_PASS $name"; PASS=$((PASS + 1))
|
||||
else
|
||||
echo "PROJECT_GATE_FAIL $name" >&2; FAIL=$((FAIL + 1))
|
||||
fi
|
||||
}
|
||||
|
||||
run "manifest" python3 "$MANIFEST_TOOL" validate "${manifest_args[@]}"
|
||||
if [[ "$FAIL" -ne 0 ]]; then
|
||||
echo "PROJECT_GATE_SUMMARY PASS=$PASS FAIL=$FAIL SKIP=$SKIP"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
project_id="$(python3 "$MANIFEST_TOOL" get "${manifest_args[@]}" --field project_id)"
|
||||
requirements="$(python3 "$MANIFEST_TOOL" get "${manifest_args[@]}" --field requirements)"
|
||||
architecture="$(python3 "$MANIFEST_TOOL" get "${manifest_args[@]}" --field architecture)"
|
||||
domain_root="$(python3 "$MANIFEST_TOOL" domain-root "${manifest_args[@]}")"
|
||||
evidence_dir="$ROOT/docs/output/casan/$project_id/project-gate"
|
||||
mkdir -p "$evidence_dir"
|
||||
|
||||
run "requirement-security" bash "$SCRIPT_DIR/artifact-scan.sh" "$ROOT/$requirements" "$project_id-requirements"
|
||||
run "architecture-security" bash "$SCRIPT_DIR/artifact-scan.sh" "$ROOT/$architecture" "$project_id-architecture"
|
||||
if [[ "${CASAN_PROJECT_GATE_RUN_CORPUS:-1}" == "1" ]]; then
|
||||
run "corpus-quality" env CASAN_DOMAIN_ROOT="$domain_root" bash "$SCRIPT_DIR/benign-fp-report.sh" "$evidence_dir/benign-fp-report.json"
|
||||
else
|
||||
echo "PROJECT_GATE_SKIP corpus-quality"; SKIP=$((SKIP + 1))
|
||||
fi
|
||||
run "traceability" python3 "$SCRIPT_DIR/traceability-matrix.py" \
|
||||
--requirements "$ROOT/$requirements" \
|
||||
--map "$domain_root/traceability-map.json" \
|
||||
--out "$evidence_dir/traceability-matrix.json" --gate
|
||||
|
||||
if [[ "${CASAN_PROJECT_GATE_RUN_BUILD:-1}" == "1" ]]; then
|
||||
run "build" python3 "$MANIFEST_TOOL" run "${manifest_args[@]}" --kind build
|
||||
else
|
||||
echo "PROJECT_GATE_SKIP build"; SKIP=$((SKIP + 1))
|
||||
fi
|
||||
if [[ "${CASAN_PROJECT_GATE_RUN_TEST:-1}" == "1" ]]; then
|
||||
run "test" python3 "$MANIFEST_TOOL" run "${manifest_args[@]}" --kind test
|
||||
else
|
||||
echo "PROJECT_GATE_SKIP test"; SKIP=$((SKIP + 1))
|
||||
fi
|
||||
|
||||
python3 - "$evidence_dir/summary.json" "$project_id" "$PASS" "$FAIL" "$SKIP" <<'PY'
|
||||
import json, sys
|
||||
path, project, passed, failed, skipped = sys.argv[1:]
|
||||
with open(path, "w", encoding="utf-8") as handle:
|
||||
json.dump({"project_id": project, "pass": int(passed), "fail": int(failed), "skip": int(skipped), "accepted": int(failed) == 0}, handle, indent=2)
|
||||
handle.write("\n")
|
||||
PY
|
||||
|
||||
echo "PROJECT_GATE_SUMMARY project=$project_id PASS=$PASS FAIL=$FAIL SKIP=$SKIP evidence=$evidence_dir"
|
||||
[[ "$FAIL" -eq 0 ]]
|
||||
Reference in New Issue
Block a user