Skip to content

Commit 7ddfbea

Browse files
Update secret-scan-gitleaks.yml
Signed-off-by: LUIZ HAMILTON ROBERTO DA SILVA <[email protected]>
1 parent 0a1b3f2 commit 7ddfbea

1 file changed

Lines changed: 48 additions & 10 deletions

File tree

.github/workflows/secret-scan-gitleaks.yml

Lines changed: 48 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ jobs:
3535
- name: Checkout (PR-fast / Main-full)
3636
uses: actions/checkout@v4
3737
with:
38+
# PR: shallow checkout for speed. Push to main: full history for maximum coverage.
3839
fetch-depth: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' && 0 || 2 }}
3940

4041
- name: Ensure output folder exists + baselines
@@ -78,6 +79,7 @@ jobs:
7879
if: always()
7980
shell: bash
8081
run: |
82+
# Report-only: never fail the job
8183
set +e
8284
8385
CFG=()
@@ -110,12 +112,12 @@ jobs:
110112
python3 - << 'PY'
111113
import json, os, re
112114
113-
out_dir = os.environ["OUT_DIR"]
114-
json_path = os.path.join(out_dir, os.environ["OUT_JSON"])
115-
sarif_path= os.path.join(out_dir, os.environ["OUT_SARIF"])
116-
log_path = os.path.join(out_dir, os.environ["OUT_LOG"])
117-
md_path = os.path.join(out_dir, os.environ["OUT_MD"])
118-
ver = os.environ.get("GITLEAKS_VERSION","0")
115+
out_dir = os.environ["OUT_DIR"]
116+
json_path = os.path.join(out_dir, os.environ["OUT_JSON"])
117+
sarif_path = os.path.join(out_dir, os.environ["OUT_SARIF"])
118+
log_path = os.path.join(out_dir, os.environ["OUT_LOG"])
119+
md_path = os.path.join(out_dir, os.environ["OUT_MD"])
120+
ver = os.environ.get("GITLEAKS_VERSION","0")
119121
120122
# Read log (for error context)
121123
log_text = ""
@@ -179,35 +181,71 @@ jobs:
179181
180182
# --- Markdown report ---
181183
status = "OK"
182-
# Detect config failure or fatal error in log
183184
if re.search(r"\bFTL\b|\bFailed to load config\b", log_text, re.IGNORECASE):
184185
status = "ERROR (see log)"
185186
187+
mode = "Main (full history)"
188+
if os.environ.get("GITHUB_EVENT_NAME","") == "pull_request":
189+
mode = "PR-fast (working tree only)"
190+
186191
md = []
187192
md.append("# Gitleaks Secret Scan (Report-Only)")
188193
md.append("")
189194
md.append(f"**Status:** {status}")
190-
md.append(f"**Mode:** {'PR-fast (working tree only)' if os.environ.get('GITHUB_EVENT_NAME','')=='pull_request' else 'Main (full history)'}")
195+
md.append(f"**Mode:** {mode}")
191196
md.append(f"**Findings:** {len(findings)}")
192197
md.append("")
193198
if len(findings) == 0:
194199
md.append("No secrets detected (or scan produced no findings).")
195200
else:
196-
# Top rule counts
197201
counts = {}
198202
for x in findings:
199203
rid = pick(x, "RuleID", "ruleID", "Rule", "rule", default="gitleaks")
200204
counts[rid] = counts.get(rid, 0) + 1
205+
201206
md.append("## Top Rules")
202207
for rid, c in sorted(counts.items(), key=lambda kv: kv[1], reverse=True)[:15]:
203208
md.append(f"- `{rid}`: {c}")
209+
204210
md.append("")
205-
md.append("> Artifacts: `gitleaks.json`, `gitleaks.sarif`, `gitleaks.log`")
211+
md.append("> Artifacts: `gitleaks.json`, `gitleaks.sarif`, `gitleaks.log`, `gitleaks-report.md`")
206212
207213
with open(md_path, "w", encoding="utf-8") as f:
208214
f.write("\n".join(md) + "\n")
209215
PY
210216
217+
- name: Publish report to Run Summary (View Runs)
218+
if: always()
219+
shell: bash
220+
run: |
221+
set -euo pipefail
222+
223+
COUNT="$(python3 -c 'import json; import sys; print(len(json.load(open(sys.argv[1]))))' "${OUT_DIR}/${OUT_JSON}" 2>/dev/null || echo 0)"
224+
225+
{
226+
echo "## 🔐 Gitleaks Secret Scan (Report-Only)"
227+
echo ""
228+
echo "**Workflow:** PR-fast / Main-full"
229+
echo "**Event:** \`${{ github.event_name }}\`"
230+
echo "**Ref:** \`${{ github.ref }}\`"
231+
echo "**Findings:** ${COUNT}"
232+
echo ""
233+
echo "### Report"
234+
echo ""
235+
if [ -f "${OUT_DIR}/${OUT_MD}" ]; then
236+
cat "${OUT_DIR}/${OUT_MD}"
237+
else
238+
echo "_No markdown report file found:_ \`${OUT_DIR}/${OUT_MD}\`"
239+
fi
240+
echo ""
241+
echo "### Artifacts"
242+
echo ""
243+
echo "- \`${OUT_DIR}/${OUT_JSON}\`"
244+
echo "- \`${OUT_DIR}/${OUT_SARIF}\`"
245+
echo "- \`${OUT_DIR}/${OUT_LOG}\`"
246+
echo "- \`${OUT_DIR}/${OUT_MD}\`"
247+
} >> "$GITHUB_STEP_SUMMARY"
248+
211249
- name: Upload artifacts (reports)
212250
if: always()
213251
uses: actions/upload-artifact@v4

0 commit comments

Comments
 (0)