Compare commits

..

10 Commits

Author SHA1 Message Date
JonKazama-Hellion dfe44fdf3b Merge pull request 'Update actions/checkout action to v6' (#4) from renovate/actions-checkout-6.x into main
Reviewed-on: #4
2026-05-12 14:43:30 +00:00
renovate-bot f5c6828302 Update actions/checkout action to v6 2026-05-12 14:43:17 +00:00
JonKazama-Hellion 54301ecdf6 Merge pull request 'Update actions/setup-python action to v6' (#5) from renovate/actions-setup-python-6.x into main
Reviewed-on: #5
2026-05-12 14:42:53 +00:00
renovate-bot ef287c8868 Update actions/setup-python action to v6 2026-05-12 12:34:06 +00:00
JonKazama-Hellion 6274df8e48 Merge pull request 'Configure Renovate' (#3) from renovate/configure into main
Reviewed-on: #3
2026-05-12 07:05:22 +00:00
renovate-bot c9c318c092 Add renovate.json 2026-05-12 06:34:48 +00:00
JonKazama-Hellion 7cbc8fcccc Merge pull request 'fix(scan): pin Trivy to v0.70.0 (avoid GitHub rate-limit)' (#2) from fix/pin-trivy-version into main
Reviewed-on: #2
2026-05-12 00:13:43 +00:00
renovate-bot 27a469b169 fix(scan): pin Trivy to v0.70.0 to avoid GitHub rate-limit
The trivy install script otherwise queries api.github.com unauthenticated
for the latest release tag. Self-hosted runners hit rate-limit quickly
when multiple workflows run in succession, leading to empty version
resolution and install failures.

Version pinned with renovate annotation so updates flow through Renovate.
2026-05-12 00:12:13 +00:00
JonKazama-Hellion 1222381732 Merge pull request 'fix(scan): merge semgrep + trivy into one job (act_runner race)' (#1) from fix/sequential-scan-jobs into main
Reviewed-on: #1
2026-05-11 23:12:56 +00:00
renovate-bot 27c4db980e fix(scan): merge semgrep + trivy into one job to avoid act_runner race
act_runner v0.6.1 fails when 2 jobs in the same task chown the shared workspace in parallel. Sequential steps inside one job sidestep the issue.

Trivy step uses if: always() so both tools surface findings in a single run.
2026-05-11 23:11:39 +00:00
2 changed files with 35 additions and 22 deletions
+29 -22
View File
@@ -1,8 +1,13 @@
name: Security Scan (reusable)
# Reusable workflow consumed by per-repo security.yml stubs across the
# Hellion stack. Runs Semgrep SAST and Trivy filesystem scan in parallel.
# Either job failing fails the calling workflow.
# Hellion stack. Runs Semgrep SAST + Trivy filesystem scan sequentially
# inside a single job. Either tool failing fails the calling workflow.
#
# Why one job, not two parallel jobs:
# act_runner v0.6.1 has a race condition when two jobs in the same task
# share a workspace and chown it in parallel — one container never gets
# /var/run/act/ provisioned and silent-fails. Sequential steps avoid it.
on:
workflow_call:
@@ -24,24 +29,37 @@ on:
default: ''
jobs:
semgrep:
name: Semgrep SAST
scan:
name: Security Scan
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v6
- name: Set up Python
uses: actions/setup-python@v5
uses: actions/setup-python@v6
with:
python-version: '3.x'
- name: Install Semgrep
run: pip install --no-cache-dir semgrep
- name: Run Semgrep scan
- name: Install Trivy
# Direct install via the official upstream script. The aquasecurity/
# trivy-action wrapper does nested checkouts and auth-juggling that
# does not play well with Self-Hosted Gitea Actions, this is more
# robust and a smaller surface.
#
# Version pinned: the install script otherwise hits api.github.com to
# resolve "latest", which is unauthenticated and burns through the
# self-hosted runner's GitHub rate-limit on each push. Pinning skips
# the API call entirely. Renovate-bot keeps the version current:
# renovate: datasource=github-releases depName=aquasecurity/trivy
run: curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh | sudo sh -s -- -b /usr/local/bin v0.70.0
- name: Run Semgrep SAST
# --config=auto pulls language-appropriate rule packs from semgrep.dev
# without requiring an account. --error makes the job fail when ERROR
# without requiring an account. --error makes the step fail when ERROR
# findings exist. WARNING-level rules still run for visibility but do
# not fail the build (they would dominate the noise).
# Per-repo rule exclusion via the semgrep-exclude-rules input.
@@ -57,22 +75,11 @@ jobs:
echo "Running: semgrep scan $args"
semgrep scan $args
trivy:
name: Trivy Vulnerability Scan
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Trivy
# Direct install via the official upstream script. The aquasecurity/
# trivy-action wrapper does nested checkouts and auth-juggling that
# does not play well with Self-Hosted Gitea Actions, this is more
# robust and a smaller surface.
run: curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh | sudo sh -s -- -b /usr/local/bin
- name: Run Trivy filesystem scan
# if: always() — surface Trivy findings even when Semgrep fails first,
# so a single run gives the full combined picture.
# Scans dependency manifests (NuGet, npm, package-lock etc.) against
# the NVD CVE database. --ignore-unfixed skips findings that have
# no patched version available so we focus on actionable items.
if: always()
run: trivy fs --severity ${{ inputs.severity }} --exit-code 1 --ignore-unfixed .
+6
View File
@@ -0,0 +1,6 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [
"config:recommended"
]
}