@@ -19,8 +19,8 @@ if [ -n "$CHANGED_YAMLS" ]; then
1919 K8S=$( echo " $CHANGED_YAMLS " | xargs grep -l ' kind:' 2> /dev/null | wc -l | tr -d ' ' )
2020fi
2121[ -z " $K8S " ] && K8S=0
22- # Phase 3 — File-Path-Awareness
23- # Liste der geänderten Files für path-tier-Klassifizierung im Backend
22+
23+ # ── Phase 3 — File-Path-Awareness ────────────────────────────────────────
2424CHANGED_PATHS=$( git diff HEAD~1 --name-only 2> /dev/null | tr ' \n' ' ,' | sed ' s/,$//' )
2525[ -z " $CHANGED_PATHS " ] && CHANGED_PATHS=" "
2626
@@ -29,6 +29,25 @@ if [ -n "${DIFF_CHANGED_PATHS:-}" ]; then
2929 CHANGED_PATHS=" ${DIFF_CHANGED_PATHS} "
3030fi
3131
32+ # ── Phase 5 — Repo-Type-Detection Metadata ───────────────────────────────
33+ HAS_DOCKERFILE=" false"
34+ HAS_PYTHON_DEPS=" false"
35+ HAS_NODE_DEPS=" false"
36+ HAS_TERRAFORM=" false"
37+ HAS_SETUP_PY=" false"
38+
39+ [ -f " Dockerfile" ] || [ -f " dockerfile" ] && HAS_DOCKERFILE=" true"
40+ [ -f " requirements.txt" ] || [ -f " pyproject.toml" ] || [ -f " Pipfile" ] && HAS_PYTHON_DEPS=" true"
41+ [ -f " package.json" ] && HAS_NODE_DEPS=" true"
42+
43+ # Terraform-Files irgendwo im Repo?
44+ if find . -maxdepth 3 -name " *.tf" -type f 2> /dev/null | head -1 | grep -q ' .' ; then
45+ HAS_TERRAFORM=" true"
46+ fi
47+
48+ [ -f " setup.py" ] && HAS_SETUP_PY=" true"
49+
50+ # ── K8s-Specifics (Single Replica, PDB) ──────────────────────────────────
3251SINGLE_REPLICA=" false"
3352MISSING_PDB=" false"
3453HAS_DEPLOYMENT=0
@@ -65,6 +84,7 @@ HELM_CHART_CHANGED=$(git diff HEAD~1 --name-only 2>/dev/null | grep -E 'Chart\.y
6584[ -z " $HELM_CHART_CHANGED " ] && HELM_CHART_CHANGED=0
6685[ " $HELM_CHART_CHANGED " -gt 0 ] && HELM_CHART_BUMPED=" true" || HELM_CHART_BUMPED=" false"
6786
87+ # ── Dependencies & Major Bumps ────────────────────────────────────────────
6888DEP_FILES=$( git diff HEAD~1 --name-only 2> /dev/null | \
6989 grep -E ' package\.json|requirements\.txt|go\.mod|pom\.xml|Gemfile|Cargo\.toml|yarn\.lock|package-lock\.json' | \
7090 wc -l | tr -d ' ' )
101121INC7=$( echo " ${INCIDENTS_7D:- 0} " | tr -d ' \n' )
102122INC30=$( echo " ${INCIDENTS_30D:- 0} " | tr -d ' \n' )
103123
104- # Pipeline Security Findings (Phase 2)
124+ # ── Pipeline Security Findings (Phase 2) ─────────────────────────────────
105125TRIVY_CRIT=$( echo " ${TRIVY_CRITICAL_CVES:- 0} " | tr -d ' \n' )
106126TRIVY_HIGH=$( echo " ${TRIVY_HIGH_CVES:- 0} " | tr -d ' \n' )
107127SEM_TOTAL=$( echo " ${SEMGREP_FINDINGS:- 0} " | tr -d ' \n' )
108128SEM_HIGH=$( echo " ${SEMGREP_HIGH_SEVERITY:- 0} " | tr -d ' \n' )
109129CKV_TOTAL=$( echo " ${CHECKOV_FAILED_CHECKS:- 0} " | tr -d ' \n' )
110130CKV_CRIT=$( echo " ${CHECKOV_CRITICAL_FAILURES:- 0} " | tr -d ' \n' )
111131
132+ # ── Debug Output ─────────────────────────────────────────────────────────
112133echo " [guard] diff_lines_added: ${ADDED} "
113134echo " [guard] diff_lines_removed: ${REMOVED} "
114135echo " [guard] diff_files_changed: ${FILES} "
@@ -128,15 +149,19 @@ echo " [guard] semgrep_high: ${SEM_HIGH}"
128149echo " [guard] checkov_failed: ${CKV_TOTAL} "
129150echo " [guard] checkov_critical: ${CKV_CRIT} "
130151echo " [guard] changed_paths: ${CHANGED_PATHS:- (none)} "
152+ echo " [guard] has_dockerfile: ${HAS_DOCKERFILE} "
153+ echo " [guard] has_python_deps: ${HAS_PYTHON_DEPS} "
154+ echo " [guard] has_node_deps: ${HAS_NODE_DEPS} "
155+ echo " [guard] has_terraform: ${HAS_TERRAFORM} "
156+ echo " [guard] has_setup_py: ${HAS_SETUP_PY} "
131157
132- # JSON-Array aus Komma-Liste bauen — ohne jq-Dependency
158+ # ── JSON-Array aus Komma-Liste bauen — ohne jq-Dependency ────────────────
133159if [ -n " $CHANGED_PATHS " ]; then
134160 PATHS_JSON=" ["
135161 IFS=' ,' read -ra PATH_ARR <<< " $CHANGED_PATHS"
136162 FIRST=1
137163 for p in " ${PATH_ARR[@]} " ; do
138164 [ -z " $p " ] && continue
139- # Escape doppelte Anführungszeichen (selten in Pfaden, aber safety-first)
140165 p_escaped=" ${p// \" / \\\" } "
141166 if [ $FIRST -eq 1 ]; then
142167 PATHS_JSON=" ${PATHS_JSON} \" ${p_escaped} \" "
150175 PATHS_JSON=" []"
151176fi
152177
178+ # ── Payload bauen & senden ───────────────────────────────────────────────
153179PAYLOAD=$( cat << EOF
154180{
155181 "repo": "${GITHUB_REPO} ",
@@ -173,7 +199,12 @@ PAYLOAD=$(cat <<EOF
173199 "semgrep_high_severity": ${SEM_HIGH} ,
174200 "checkov_failed_checks": ${CKV_TOTAL} ,
175201 "checkov_critical_failures": ${CKV_CRIT} ,
176- "diff_changed_paths": ${PATHS_JSON}
202+ "diff_changed_paths": ${PATHS_JSON} ,
203+ "has_dockerfile": ${HAS_DOCKERFILE} ,
204+ "has_python_deps": ${HAS_PYTHON_DEPS} ,
205+ "has_node_deps": ${HAS_NODE_DEPS} ,
206+ "has_terraform": ${HAS_TERRAFORM} ,
207+ "has_setup_py": ${HAS_SETUP_PY}
177208}
178209EOF
179210)
239270
240271if [ " $STATUS " = " PASS" ]; then
241272 echo " ✅ Deployment freigegeben (${SCORE} /100)."
242- fi
273+ fi
0 commit comments