ci: add revive lint and goreleaser dry-run jobs#7
Merged
Conversation
Two gaps the existing CI didn't cover: 1. `revive` was wired into the Makefile and the pre-commit hook in `.githooks/`, but CI only ran `golangci-lint`. A change that fails revive could pass CI yet fail the next pre-commit, or vice versa. 2. `.goreleaser.yaml` was only exercised at tag push. A broken config was invisible until release time, when it is most expensive to fix. This change extends `.github/workflows/ci.yml`: - The Lint job now installs `revive@v1.10.0` (same version as the Makefile) and runs `revive -config revive.toml ./...`. - A new `release-dryrun` job runs `goreleaser check` plus `goreleaser release --snapshot --clean --skip=publish` on every push / PR so config or build regressions surface before tagging. Both run on ubuntu-latest with go 1.25.x, matching the existing jobs. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
74e40d4 to
0fccc1a
Compare
GoReleaser v2 flags several archives.* and snapshot.* fields as deprecated: - archives.builds → archives.ids - archives.format / format_overrides.format → formats (plural) - snapshot.name_template → snapshot.version_template Migrations are mechanical; functional output is identical. All caught by the new `GoReleaser Check` CI job introduced earlier on this branch. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
0fccc1a to
7a06c1c
Compare
Mirror the path filter that `docs.yml` already uses, but inverted: docs / top-level markdown / the docs workflow itself should not trigger a full Go build + test + lint + goreleaser cycle. Caveat: if these jobs are ever promoted to required status checks, GitHub will mark them as "Expected — Waiting" on docs-only PRs and block merges. The standard fix in that case is a no-op meta-job that always reports success; out of scope here. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Two gaps the existing CI didn't cover:
revivenot in CI. The Makefile and.githooks/pre-commitboth run it (alongsidegolangci-lint), butci.ymlonly runsgolangci-lint. A change that fails revive could pass CI yet fail the next pre-commit, and vice-versa..goreleaser.yamlwas only exercised when av*tag was pushed. Config or build regressions stayed invisible until release time, when they are most expensive to fix.This PR extends
.github/workflows/ci.ymlonly — no production code changes:revive@v1.10.0(same version asMakefile) and runsrevive -config revive.toml ./....goreleaser checkplusgoreleaser release --snapshot --clean --skip=publishon every push / PR, so config or cross-compile regressions surface before tagging.Both run on
ubuntu-latestwith Go 1.25.x, matching the existing jobs.Test plan
revive -config revive.toml ./...passes locally (0 issues).Lintjob now hasrevivestep appearing aftergolangci-lint.GoReleaser Checkjob runsgoreleaser checkandgoreleaser release --snapshot --clean --skip=publish.🤖 Generated with Claude Code