ci: add dependency vulnerability pipeline gate - #45
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Why
The repository already had a production dependency scanner and a controlled vulnerable sample application, but CI did not exercise that path. A live OSV request would make the security gate depend on network availability and mutable upstream data.
This change records the expected OSV query and response in a fixture, injects that fixture through the normal production scanner path, and keeps the pipeline reproducible. Query mismatches, malformed fixtures, and scanner/source failures fail closed with exit code 2.
Behavior
--fail-on highreturns exit code 1CI follow-up
The first PR run exposed a Linux import-path difference: invoking a package file directly did not place the repository root on
sys.path, causingModuleNotFoundError: No module named 'tools'.Security utilities now run as package modules with
python -m tools..., use relative package imports, and have a subprocess regression test that removes the repository root fromPYTHONPATH.Validation
997 passed19 passed997 passed39 passedgit diff --checkpassedFollow-up
Uploading generated security reports as GitHub Actions artifacts remains a separate backlog item.