Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 11 additions & 6 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,20 @@ jobs:
- name: Checkout code
uses: actions/checkout@v5

# 1.25.x, not go-version-file: go.mod. setup-go reads the go directive as
# an exact patch, which would pin every released binary to the stdlib as
# it shipped in that patch, CVEs included. This tracks the newest patch of
# the minor version go.mod declares, which is what a shipped binary needs;
# go.mod stays the language-version contract.
# 1.26.x here and in the release job, while build and test stay on the
# 1.25.x go.mod declares. setup-go reads the go directive as an exact
# patch, which would pin every released binary to the stdlib as it
# shipped in that patch, CVEs included, so the jobs name a minor version
# and take its newest patch -- check-latest, or setup-go settles for the
# newest one the runner caches. The scan goes one minor further because
# 1.25 left support when 1.27 shipped: its stdlib advisories are fixed in
# 1.26 and later only. go.mod stays the language-version contract, and
# the build and test jobs keep proving that floor.
- name: Set up Go
uses: actions/setup-go@v6
with:
go-version: "1.25.x"
go-version: "1.26.x"
check-latest: true
cache-dependency-path: go.sum

- name: golangci-lint
Expand Down
16 changes: 10 additions & 6 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,19 @@ jobs:
with:
fetch-depth: 0

# 1.25.x, not go-version-file: go.mod. setup-go reads the go directive as
# an exact patch, which would pin every released binary to the stdlib as
# it shipped in that patch, CVEs included. This tracks the newest patch of
# the minor version go.mod declares, which is what a shipped binary needs;
# go.mod stays the language-version contract.
# 1.26.x, the oldest Go still patched: a released binary carries the
# stdlib it was built with, and 1.25 left support when 1.27 shipped, so
# its advisories are fixed in 1.26 and later only. setup-go reads the go
# directive as an exact patch, which would pin every released binary to
# the stdlib as it shipped in that patch, CVEs included, so this names a
# minor version and takes its newest patch -- check-latest, or setup-go
# settles for the newest one the runner caches. go.mod stays the
# language-version contract.
- name: Set up Go
uses: actions/setup-go@v6
with:
go-version: "1.25.x"
go-version: "1.26.x"
check-latest: true
cache-dependency-path: go.sum

- name: Run GoReleaser
Expand Down
Loading