Skip to content

chore: security upgrades 2026-09 - #33

Merged
nickmarden merged 3 commits into
mainfrom
chore/security-upgrades-2026-09
Sep 14, 2026
Merged

nickmarden merged 3 commits into
mainfrom
chore/security-upgrades-2026-09

Conversation

@nickmarden

Copy link
Copy Markdown
Contributor

Collapses the two open Dependabot PRs onto one branch and fixes the coverage
flake that was making one of them look red.

Closes #31
Closes #32

What is here

The coverage flake

PR #31 touched nothing but the two Dockerfiles and still failed test with:

ERROR: Uncovered code without coverage:ignore comments:

internal/server/server.go:124

That is the HTTP shutdown error branch, and it is not something an alpine bump
can reach. TestServer_Shutdown_ErrorPaths gave both servers the same handler
and closed a single handlerStarted channel from a sync.Once, so it waited
for whichever of the two requests arrived first and then shut down. The server
that had not started yet had no connection in flight, Shutdown returned nil
for it, and its error branch never ran.

Whichever side lost the race was the uncovered one, and that varied by machine.
The coverage:ignore added in 0.2.15 sat on the HTTPS branch, so it covered
exactly one of the two symmetric outcomes and did nothing on a run where HTTP
was the short one.

Each server now gets its own handler and its own started channel, the test waits
for both, and it asserts the joined error names both servers. Both branches run
every time, so the ignore is gone and internal/server reports a real 100%
instead of 98.5%.

Verified with 8 clean runs plus 6 more under CPU contention at -cpu=1; both
blocks report covered in every one.

Survey notes

  • govulncheck is clean. The one module-level finding, GO-2026-5932
    (x/crypto/openpgp unmaintained), has Fixed in: N/A and nothing here
    imports openpgp.
  • go list -u -m reports no direct module updates outstanding.
  • Every uses: is pinned to a full SHA, and every setup-go job already
    allowlists release-assets.githubusercontent.com:443.
  • All six workflows are active; none has been disabled for inactivity since
    snyk.yml was switched back on last pass.
  • Dependabot security updates are still disabled at the repo level, though
    .github/dependabot.yml covers all three ecosystems, which is what opened
    build(deps): bump alpine from 3.23.5 to 3.24.1 #31 and build(deps): bump the actions-all group with 3 updates #32.

make check is green on the committed tree: lint 0 issues, coverage 99.0% with
every uncovered line carrying a marker, both binaries build.

dependabot Bot and others added 3 commits September 14, 2026 15:10
Bumps the actions-all group with 3 updates: [step-security/harden-runner](https://github.com/step-security/harden-runner), [golangci/golangci-lint-action](https://github.com/golangci/golangci-lint-action) and [github/codeql-action/upload-sarif](https://github.com/github/codeql-action).

Updates `step-security/harden-runner` from 2.21.0 to 2.21.1
- [Release notes](https://github.com/step-security/harden-runner/releases)
- [Commits](step-security/harden-runner@05e3151...e14015d)

Updates `golangci/golangci-lint-action` from 7.0.1 to 9.3.0
- [Release notes](https://github.com/golangci/golangci-lint-action/releases)
- [Commits](golangci/golangci-lint-action@9fae48a...ba0d7d2)

Updates `github/codeql-action/upload-sarif` from 4.37.9 to 4.38.0
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](github/codeql-action@cdf488f...b96794f)

---
updated-dependencies:
- dependency-name: step-security/harden-runner
  dependency-version: 2.21.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions-all
- dependency-name: golangci/golangci-lint-action
  dependency-version: 9.3.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: actions-all
- dependency-name: github/codeql-action/upload-sarif
  dependency-version: 4.38.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: actions-all
...

Signed-off-by: dependabot[bot] <support@github.com>
(cherry picked from commit 32e27f9)
Bumps alpine from 3.23.5 to 3.24.1.

---
updated-dependencies:
- dependency-name: alpine
  dependency-version: 3.24.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
(cherry picked from commit 69af559)
TestServer_Shutdown_ErrorPaths shared one handler between the HTTP and
HTTPS servers and closed a single `handlerStarted` channel from a
sync.Once, so it only ever waited for whichever request arrived first.
The other server had nothing in flight when Shutdown ran against a
canceled context, returned nil, and left its error branch uncovered.

Which side lost the race varied by machine, so the 100% coverage gate
passed locally and failed intermittently on CI. The coverage:ignore
added for this sat on the HTTPS branch and did nothing on the runs where
the HTTP branch was the uncovered one.

Give each server its own handler and its own started channel, wait for
both before shutting down, and assert the error names both servers.
Both branches are now exercised on every run, so the ignore comes off
and internal/server is back to a real 100%.
@sonarqubecloud

Copy link
Copy Markdown

@codecov

codecov Bot commented Sep 14, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@nickmarden
nickmarden merged commit 90a0077 into main Sep 14, 2026
11 checks passed
@nickmarden
nickmarden deleted the chore/security-upgrades-2026-09 branch September 14, 2026 19:15
@github-actions

Copy link
Copy Markdown

Docker Images Built

Images are available for testing:

# gatekeeperd
docker pull ghcr.io/tight-line/gatekeeperd:pr-33-a6f85fb

# gatekeeper-relay
docker pull ghcr.io/tight-line/gatekeeper-relay:pr-33-a6f85fb

docker-compose.yml

GATEKEEPERD_IMAGE=ghcr.io/tight-line/gatekeeperd:pr-33-a6f85fb \
RELAY_IMAGE=ghcr.io/tight-line/gatekeeper-relay:pr-33-a6f85fb \
docker-compose --profile relay up

Helm (values override)

image:
  repository: ghcr.io/tight-line/gatekeeperd  # or gatekeeper-relay
  tag: "pr-33-a6f85fb"

Images expire ~15 days after PR closes.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant