Skip to content

Pin CI to go 1.25.0 and golangci-lint 2.8.0 exactly#195

Open
mtlynch wants to merge 2 commits intotimelinize:mainfrom
mtlynch:lint-2.8.0
Open

Pin CI to go 1.25.0 and golangci-lint 2.8.0 exactly#195
mtlynch wants to merge 2 commits intotimelinize:mainfrom
mtlynch:lint-2.8.0

Conversation

@mtlynch
Copy link
Copy Markdown

@mtlynch mtlynch commented Apr 29, 2026

This change pins CI to use go 1.25.0 and golangci-lint to 2.8.0 so that changes outside this repo don't cause CI to break out from under us.

In 01063cf, CI passed, and then in 0169e2b, CI began to fail though not due to anything in the commit itself. Every commit since then has failed CI, which drastically devalues CI through alarm fatigue.

The last passing commit's CI ran with golangci-lint 2.8.0. The first failing commit ran with golangci-lint 2.11.4. 2.11.4 added checks that caused existing issues in the codebase to break CI.

CI should not break out from under us when there have been no changes. We should regularly update to the latest and greatest static analysis tools and linters, but that should happen in a commit where we explicitly choose to upgrade, not automatically during other changes.

I also pinned go-version to 1.25.0 instead of stable because using go 1.26.0 breaks pinned tooling that expects go 1.25.0.

I also had to partially roll back 9ad4fa1, as golangci-lint fails on unused warning suppressions, and the warnings we suppressed in that commit are for errors that golanci-lint 2.8.0 does not flag.

Assistance Disclosure

I used AI to find the correct GitHub CI semantics but verified the results.

mtlynch added 2 commits April 29, 2026 09:21
This change pins CI to use go 1.25.0 and golangci-lint to 2.8.0 so that changes outside this repo don't cause CI to break out from under us.

In 01063cf, CI passed, and then in 0169e2b, CI began to fail though not due to anything in the commit itself. Every commit since then has failed CI, which drastically devalues CI through alarm fatigue (https://en.wikipedia.org/wiki/Alarm_fatigue).

The last passing commit's CI ran with golangci-lint 2.8.0 (https://github.com/timelinize/timelinize/actions/runs/21487184099/job/61899566316). The first failing commit ran with golangci-lint 2.11.4 (https://github.com/timelinize/timelinize/actions/runs/23951998278/job/69861473343). 2.11.4 added checks that caused existing issues in the codebase to break CI.

CI should not break out from under us when there have been no changes. We should regularly update to the latest and greatest static analysis tools and linters, but that should happen in a commit where we explicitly choose to upgrade, not automatically during other changes.

I also pinned  to  instead of  because using go 1.26.0 breaks pinned tooling that expects go 1.25.0.
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