fix(ci): SAST actually scans the code + drop deprecated flaky semgrep action
Two real problems in the Static Application Security Testing job: 1. **It scanned a path that no longer exists.** `bandit -r src/` and `semgrep … src/` pointed at the repo-root `src/`, but the Python code moved to `archive/v1/src/` (64 .py files) when the runtime was rewritten in Rust. So the SAST scan matched nothing — a silent no-op (this is also why `bandit-results.sarif` was "Path does not exist" on recent runs). Fixed both to `archive/v1/src/`. 2. **Deprecated + redundant + flaky semgrep step.** The `returntocorp/semgrep-action@v1` step pulled `returntocorp/semgrep-agent:v1` from Docker Hub every run (intermittently timing out → red check, e.g. on #929) and is EOL. It was redundant: the pip `semgrep --sarif` step is what feeds GitHub Security; the action only pushed to the Semgrep cloud app via SEMGREP_APP_TOKEN. Removed it and folded its `p/docker` + `p/kubernetes` rulesets into the pip semgrep command, so coverage is preserved with no Docker pull. The job stays `continue-on-error: true` (non-gating). YAML validated. Co-Authored-By: claude-flow <ruv@ruv.net>
This commit is contained in:
parent
be48143f77
commit
d7d933af87
|
|
@ -46,7 +46,10 @@ jobs:
|
||||||
|
|
||||||
- name: Run Bandit security scan
|
- name: Run Bandit security scan
|
||||||
run: |
|
run: |
|
||||||
bandit -r src/ -f sarif -o bandit-results.sarif
|
# The Python codebase lives under archive/v1/src (it moved there when
|
||||||
|
# the runtime was rewritten in Rust). Scanning `src/` matched nothing,
|
||||||
|
# so this SAST step was a silent no-op.
|
||||||
|
bandit -r archive/v1/src/ -f sarif -o bandit-results.sarif
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
|
|
||||||
- name: Upload Bandit results to GitHub Security
|
- name: Upload Bandit results to GitHub Security
|
||||||
|
|
@ -57,22 +60,20 @@ jobs:
|
||||||
sarif_file: bandit-results.sarif
|
sarif_file: bandit-results.sarif
|
||||||
category: bandit
|
category: bandit
|
||||||
|
|
||||||
- name: Run Semgrep security scan
|
# Removed the deprecated `returntocorp/semgrep-action@v1` step: it was
|
||||||
continue-on-error: true
|
# redundant (the pip `semgrep --sarif` below is what feeds GitHub Security;
|
||||||
uses: returntocorp/semgrep-action@v1
|
# the action only pushed to the Semgrep cloud app via SEMGREP_APP_TOKEN) and
|
||||||
with:
|
# it pulled `returntocorp/semgrep-agent:v1` from Docker Hub on every run,
|
||||||
config: >-
|
# which intermittently timed out and turned this check red. The pip semgrep
|
||||||
p/security-audit
|
# (installed above) needs no Docker pull. The action's `p/docker` +
|
||||||
p/secrets
|
# `p/kubernetes` rulesets are folded into the command below so coverage is
|
||||||
p/python
|
# preserved.
|
||||||
p/docker
|
- name: Run Semgrep + generate SARIF
|
||||||
p/kubernetes
|
|
||||||
env:
|
|
||||||
SEMGREP_APP_TOKEN: ${{ secrets.SEMGREP_APP_TOKEN }}
|
|
||||||
|
|
||||||
- name: Generate Semgrep SARIF
|
|
||||||
run: |
|
run: |
|
||||||
semgrep --config=p/security-audit --config=p/secrets --config=p/python --sarif --output=semgrep.sarif src/
|
semgrep \
|
||||||
|
--config=p/security-audit --config=p/secrets --config=p/python \
|
||||||
|
--config=p/docker --config=p/kubernetes \
|
||||||
|
--sarif --output=semgrep.sarif archive/v1/src/
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
|
|
||||||
- name: Upload Semgrep results to GitHub Security
|
- name: Upload Semgrep results to GitHub Security
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue