Skip to content

Commit 8920de1

Browse files
perf(trufflehog): PR scan via --include-paths regex file
Use one trufflehog filesystem invocation over . with --include-paths (anchored re.escape per path) to avoid argv limits; addresses review. Revert get-vault-secrets action pin to match main (f1614b2). Made-with: Cursor
1 parent f2f56c5 commit 8920de1

1 file changed

Lines changed: 13 additions & 9 deletions

File tree

.github/workflows/reusable-trufflehog.yml

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -147,28 +147,32 @@ jobs:
147147
fi
148148
149149
if [[ -s changed-files.txt ]]; then
150-
# One TruffleHog per argv batch (not per file): avoids repeated process startup on
151-
# large diffs; GNU xargs -0 splits when argv would exceed OS limits.
152-
paths=()
150+
# One TruffleHog process over repo root; --include-paths file lists anchored regexes
151+
# (TruffleHog expects regex lines, not raw paths — see trufflesecurity docs).
152+
INCLUDE_REGEXES=/tmp/trufflehog-pr-include-regexes.txt
153+
: > "${INCLUDE_REGEXES}"
153154
while IFS= read -r file; do
154155
if [[ -s /tmp/exclude-regexes.txt ]] && echo "$file" | grep -qEf /tmp/exclude-regexes.txt 2>/dev/null; then
155156
echo "Skipping: ${file} (matches exclude pattern)"
156157
continue
157158
fi
158159
if [[ -f "${file}" ]]; then
159-
paths+=("${file}")
160+
python3 -c 'import re, sys; print("^" + re.escape(sys.argv[1]) + "$")' "$file" >> "${INCLUDE_REGEXES}"
160161
fi
161162
done < changed-files.txt
162163
163-
if ((${#paths[@]} > 0)); then
164-
echo "TruffleHog: ${#paths[@]} path(s), batched by xargs as needed"
164+
if [[ -s "${INCLUDE_REGEXES}" ]]; then
165+
sort -u -o "${INCLUDE_REGEXES}" "${INCLUDE_REGEXES}"
166+
n_inc=$(wc -l < "${INCLUDE_REGEXES}")
167+
echo "TruffleHog: ${n_inc} path(s) via --include-paths (anchored regexes)"
165168
: > results.ndjson
166-
printf '%s\0' "${paths[@]}" | xargs -0 -r trufflehog filesystem \
169+
trufflehog filesystem . \
170+
--include-paths "${INCLUDE_REGEXES}" \
167171
--exclude-paths /tmp/trufflehog-exclude.txt \
168172
--concurrency 16 \
169173
--json \
170174
--no-update \
171-
--results=verified,unverified >> results.ndjson || true
175+
--results=verified,unverified > results.ndjson || true
172176
else
173177
echo "No files to scan after excludes (only deletions or excluded paths)"
174178
fi
@@ -393,7 +397,7 @@ jobs:
393397
id-token: write
394398
steps:
395399
- name: Get Prometheus secrets from Vault
396-
uses: grafana/shared-workflows/actions/get-vault-secrets@078c4a8af09e06d646077550f9e0f68171d5881e # get-vault-secrets/v1.3.1
400+
uses: grafana/shared-workflows/actions/get-vault-secrets@f1614b210386ac420af6807a997ac7f6d96e477a # get-vault-secrets/v1.3.1
397401
with:
398402
common_secrets: |
399403
PROMETHEUS_URL=grafana-bench:prometheus_url

0 commit comments

Comments
 (0)