Skip to content

Update dependencies, move to Go 1.27.1, add GitHub Actions CI - #823

Merged
wayneeseguin merged 7 commits into
developfrom
update-deps-go127-gha
Sep 9, 2026
Merged

Update dependencies, move to Go 1.27.1, add GitHub Actions CI#823
wayneeseguin merged 7 commits into
developfrom
update-deps-go127-gha

Conversation

@wayneeseguin

Copy link
Copy Markdown
Contributor

Merges the open Dependabot work, refreshes every dependency, moves the toolchain to Go 1.27.1, and replaces the dark Concourse pipeline with a GitHub Actions workflow that runs on the FiveTwenty lab runners.

Dependencies

Four Dependabot pull requests (#816, #818, #820, #821) are already merged into develop. The fifth, #819, bumped github.com/moby/moby/v2; the Docker client has since split into moby/moby/api and moby/moby/client, so that module is gone from go.mod entirely and the pull request is superseded.

On top of those merges, every direct and indirect module moves to its latest release and the vendor tree is rebuilt. The go directive moves to 1.27.1, and the Dockerfile builds with the same toolchain.

Continuous integration

There were no workflows in this repository. The new .github/workflows/ci.yml runs five jobs on every push and pull request against develop and main, each in a golang:1.27.1 container on a self-hosted runner:

  • Lintgofmt over the tracked sources and go vet ./...
  • Testmake go-tests, which builds the binaries the agent suite shells out to and then runs the suite under the race detector
  • Buildgo mod verify, a vendored build of every package, and make build
  • Plugin Testsmake plugin-tests, reporting without blocking (see below)
  • Security Scangovulncheck plus a trivy filesystem scan gated at HIGH and CRITICAL

Actions are pinned to full commit SHAs at their current releases: actions/checkout v7.0.1, actions/setup-go v7.0.0, and trivy v0.74.0. A new .github/dependabot.yml keeps those pins, the Go modules, and the base images current on a weekly schedule.

Everything the workflow gates on was run locally against this branch and passes: gofmt is clean, go vet is clean, the race suite is green across all nine packages, the vendored build succeeds, govulncheck finds nothing reachable, and trivy exits zero. The image builds and shieldd --version runs out of it.

Two things worth reading

The plugin suite is not a gate yet. Eight of the 134 specs in t/plugins fail on develop today, and they failed before this branch too. They assert the compact USAGE: ... help that the plugin framework printed for -h before it was changed to print the long help for both flags. Deciding whether the framework or the expectations should move is a separate change, so the job runs with continue-on-error and the comment above it says to drop that once the eight are settled.

Two small code fixes ride along, because the Lint job gates on go vet and go vet reported two things. The fs plugin's restore loop returned on end of file, so the line that reports how many files it restored could never run; it now breaks out of the loop. The tenant tests assigned two variables to themselves; those lines are gone.

The API suite (t/api) is not wired up. It downloads Vault 1.9.0 from the web and spins up a daemon, and that wants its own decision about which Vault the tests should run against.

Refresh every direct and indirect module to its newest release and
re-vendor the tree. The Docker client dependency moved from the
single moby/moby/v2 module to the split moby/moby/api and
moby/moby/client modules, which supersedes the open Dependabot pull
request for that bump.

Several of the new modules require a newer language version, so the
go directive moves up with them, to 1.27.1.
The fs plugin's restore loop returned on end of file, so the summary
line that counts the restored files could never run. Break out of the
loop instead, and the count prints as it was meant to.

The tenant tests assigned AdminUser and OtherUser to themselves right
after building them, which does nothing; drop both lines.
Match the toolchain the module now requires.
Both apt-get lines pulled in recommended packages along with the ones
they asked for, which grows the image with software SHIELD never
calls. Ask for the named packages alone.
The Concourse pipeline this repository used has been dark for a while,
and its stuck status check was the reason recent dependency pull
requests sat unmerged. Replace it with a workflow that runs on the
FiveTwenty self-hosted runners, in a golang container, the way the
graft and ocfp repositories already do.

Five jobs run on every push and pull request: gofmt and go vet, the
unit suite under the race detector, a vendored build of every binary
and plugin, the plugin suite, and a security scan that pairs
govulncheck with trivy. The plugin suite reports without blocking,
because eight of its specs already fail on develop against help text
the plugin framework no longer prints.

Trivy suppressions and the reasons we accept them live in
.trivyignore.
Weekly pull requests for Go modules, workflow actions, and the base
images. Patch and minor Go bumps travel together in one pull request
so the small runner pool is not swamped; major bumps stay on their
own, since those want reading. The github-actions ecosystem is what
keeps the workflow's commit-SHA action pins from going stale.
Travis last built this repository against Go 1.8 and has not run in
years. Remove the config and its helper script, and point the README
badge at the new workflow.
@wayneeseguin
wayneeseguin merged commit 1bf038b into develop Sep 9, 2026
1 of 4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant