- gitleaks (via docker cp, dockerignore-agnostic) and hadolint scan every push/PR
- new ruff lint stage (ruff.toml pins known-first-party for host/container
consistency; B905 in env_config.py's zip() left un-fixed — app-logic change,
see feedback-no-app-logic-changes)
- pytest --cov-fail-under=75 gate on the test stage
- scheduled Trivy critical failures now attempt an apk upgrade rebuild and open a PR
if it clears the finding, instead of just failing red
- ruff --fix/--format applied to existing code to start the gate clean
COMMIT_LIST only rendered the bare subject line per commit, with no
way to jump to that specific commit — only the triggering commit
(Source:) had a link. Each line now reads
"- [<short-sha>](<repo>/commit/<sha>) <subject>", matching the same
link style already used for Source.
The publish/release step had drifted from the sibling repos' reference
template: PR-number extraction relied on the local commit log after
the version-bump commit was already made, so it could never find the
triggering PR (that commit's own message has no PR reference) — fixed
by keying off github.sha, the fixed triggering commit, instead.
Also aligned: docker login casing (Djeex, not djeex), Trivy pinned to
0.74.0, deprecation check made informative instead of build-blocking,
publish skipped entirely when no container-relevant file changed, and
the release body now lists the individual commits (with a --- divider
under each heading) instead of the raw changed-files list.
Brings app/notifier.py from 73% to 100% test coverage by exercising the
three notification functions' TEST_MODE early-return, non-204 response,
and requests exception branches — the exact paths a requests upgrade
regression would break silently.
Bring nvidia-stock-bot up to the same CI/CD maturity as adguard-cidre:
pytest suite (19 tests), multi-stage Dockerfile with a dedicated test
stage, pinned requests dependency, Gitea Actions workflow (build, smoke
test, unit tests, deprecation check, Trivy critical/high scan, version
bump + registry publish + release), and a Renovate config for automated
dependency updates.