Skip to content

ci: fix GitHub Actions workflows#1

Merged
memclutter merged 3 commits into
mainfrom
fix/ci-workflows
Jun 28, 2026
Merged

ci: fix GitHub Actions workflows#1
memclutter merged 3 commits into
mainfrom
fix/ci-workflows

Conversation

@memclutter

Copy link
Copy Markdown
Owner

Problem

Both CI workflows failed on every run, so CI gave no signal:

  • go — matrix pinned Go 1.17/1.18, which current macOS runners can no longer download (Failed to download version … 403); fail-fast then cancelled the green Ubuntu/Windows legs. Also used deprecated actions/checkout@v2 / actions/setup-go@v2 and the retired bash <(curl … codecov.io/bash) uploader.
  • golangci-lint — read go-version: ${{ matrix.go }} while the matrix defined go_version, so setup-go got an empty version and failed before linting. Also pinned golangci-lint v1.42.1 and triggered on a non-existent master branch.

Changes

  • go.yml: Ubuntu-only, fail-fast: false, matrix go: [ '1.25', '1.26' ] (pinned for reproducibility), checkout@v4 + setup-go@v5. Keeps the proxy.py/nginx service containers and PROXY_URL/TARGET_URL, and go test ./... -race -coverprofile=…. Coverage uploaded via codecov-action@v4 on the 1.26 leg with fail_ci_if_error: false (needs the CODECOV_TOKEN secret).
  • golangci-lint.yml: single Ubuntu job, setup-go@v5 with a real go-version: '1.26', golangci-lint-action@v6 pinned to v2.12.2; drops the master trigger.
  • Fix the two findings the newer linter surfaces without changing behaviour or the public API: check the deferred Body.Close() error (errcheck); suppress ST1012 on the exported FeedEnd sentinel via //nolint rather than renaming it.

Notes

  • CODECOV_TOKEN must be set in repo secrets for coverage upload; until then the step soft-fails and never reds CI.
  • Go versions and the linter are pinned deliberately for reproducible runs; bumping them is a conscious follow-up.

🤖 Generated with Claude Code

memclutter and others added 3 commits June 28, 2026 13:18
The go and golangci-lint workflows failed on every run:

- go.yml pinned Go 1.17/1.18, which current macOS runners can no longer
  download (HTTP 403), cancelling the whole fail-fast matrix; it also used
  deprecated checkout@v2 / setup-go@v2 and the retired codecov bash uploader.
- golangci-lint.yml read go-version from ${{ matrix.go }} while the matrix
  defined go_version, so setup-go got an empty version and failed before
  linting; it also pinned golangci-lint v1.42.1 and triggered on a
  non-existent master branch.

Rewrite both: Ubuntu-only, pinned current Go (1.25/1.26), checkout@v4 +
setup-go@v5, codecov-action@v4 (soft-fail), and golangci-lint-action@v6 with
golangci-lint v2.12.2. Fix the two findings the newer linter surfaces:
check the deferred Body.Close() error, and suppress ST1012 on FeedEnd to keep
the public API name.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
golangci-lint-action v6 rejects golangci-lint v2 ("v2 is not supported by
golangci-lint-action v6, you must update to v7").

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The go.mod `go 1.18` directive conflicted with the Go 1.26 stdlib under
govet (cannot inline ioutil.ReadAll declared using go1.26 into a go1.18
file). Bump the directive to 1.25 (the lower CI matrix leg). That surfaces
the long-deprecated io/ioutil (SA1019), so switch ReadAll to io.ReadAll —
behaviour-identical, no public API change.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@memclutter memclutter merged commit 78b289b into main Jun 28, 2026
3 checks passed
@memclutter memclutter deleted the fix/ci-workflows branch June 28, 2026 10:30
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