Skip to content

ci: enforce govulncheck failures and centralize version#254

Open
MaxRink wants to merge 1 commit intomainfrom
fix/govulncheck-enforce-failures
Open

ci: enforce govulncheck failures and centralize version#254
MaxRink wants to merge 1 commit intomainfrom
fix/govulncheck-enforce-failures

Conversation

@MaxRink
Copy link
Copy Markdown
Collaborator

@MaxRink MaxRink commented Apr 8, 2026

Summary

  • Remove continue-on-error: true from govulncheck steps in both ci.yml and security-scan.yml so vulnerability findings actually fail the build instead of being silently ignored
  • In ci.yml, replace hardcoded govulncheck@v1.1.4 with ${{ env.GOVULNCHECK_VERSION }} loaded from versions.env (single source of truth), matching the pattern already used in security-scan.yml

Motivation

Code review findings CICD-1 and CICD-3 identified that govulncheck was configured with continue-on-error: true in both CI workflows, meaning vulnerability scan results were effectively ignored. This defeats the purpose of running the scanner.

Changes

.github/workflows/security-scan.yml

  • Removed continue-on-error: true from the "Run govulncheck" step

.github/workflows/ci.yml

  • Added "Load versions from versions.env" step to the security job (matching the pattern used by lint, test, and helm-lint jobs)
  • Removed continue-on-error: true from the govulncheck step
  • Changed govulncheck@v1.1.4govulncheck@${{ env.GOVULNCHECK_VERSION }} to use the centralized version

Notes

  • The continue-on-error: true on the Trivy SARIF upload step (not scan) is intentionally preserved — it exists because the upload may fail due to org security-events permission policy on forks
  • If there are currently known vulnerabilities in dependencies, this PR will correctly cause CI to fail until they are resolved

Remove continue-on-error: true from govulncheck steps in both ci.yml
and security-scan.yml so vulnerability findings actually fail the build
instead of being silently ignored.

In ci.yml, also replace the hardcoded govulncheck@v1.1.4 with the
centralized GOVULNCHECK_VERSION from versions.env (single source of
truth), matching the pattern already used in security-scan.yml.

Addresses review findings CICD-1 and CICD-3.
Copilot AI review requested due to automatic review settings April 8, 2026 13:40
@MaxRink MaxRink requested a review from a team as a code owner April 8, 2026 13:40
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR strengthens the repository’s CI security posture by ensuring govulncheck findings fail workflows and by centralizing the govulncheck tool version in versions.env (consistent with the project’s existing “single source of truth” pattern).

Changes:

  • Removed continue-on-error: true from govulncheck steps so vulnerability findings fail the workflow.
  • Updated CI to install govulncheck using ${{ env.GOVULNCHECK_VERSION }} loaded from versions.env.
  • Added a versions.env load step to the security job in ci.yml to support the centralized version.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.

File Description
.github/workflows/security-scan.yml Makes govulncheck results enforceable by removing continue-on-error.
.github/workflows/ci.yml Loads versions.env, installs govulncheck via centralized version, and enforces scanner failures.

@MaxRink
Copy link
Copy Markdown
Collaborator Author

MaxRink commented Apr 8, 2026

CI Status Note

The Go Vulnerability Check job now correctly fails — this is the intended behavior of this PR. Previously, continue-on-error: true silently swallowed these findings.

Vulnerabilities found (all Go stdlib — require Go version bump):

ID Description
GO-2026-4947 x509 certificate verification issue
GO-2026-4946 x509 certificate verification issue
GO-2026-4870 TLS handshake/connection issue
GO-2026-4865 Template execution issue

These are all in the Go standard library and will be resolved by bumping the Go toolchain version. The call chains trace through test utilities, generated apply configurations, and the webhook/controller code — but the root cause is the Go stdlib version, not application code.

Recommendation: Merge this PR first (to enforce the check), then immediately follow up with a Go version bump PR.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants