Skip to content

ci(release): add local check and release flow - #1

Merged
This-Is-NPC merged 2 commits into
masterfrom
feature/release
Jun 7, 2026
Merged

ci(release): add local check and release flow#1
This-Is-NPC merged 2 commits into
masterfrom
feature/release

Conversation

@This-Is-NPC

Copy link
Copy Markdown
Owner

Before

  • master required the local-check status, but Backstage did not yet ship the local hook/status script that produces it.
  • Releases had no release-please or GoReleaser configuration, so tags, changelog bumps, and binaries would still be manual.

After

  • mise run check is the canonical local gate, and the tracked pre-push hook posts local-check for PR branch heads.
  • Merged PRs into master run release-please; release PR merges create GitHub releases and GoReleaser artifacts.

Summary of changes

Aspect Change
Local checks Added mise check tasks, minimal golangci-lint config, govulncheck, and the tool-agnostic gate under scripts/check.sh
Merge gate Added scripts/local-check.sh and scripts/hooks/pre-push to post the required local-check status
Release automation Added release-please config, manifest, GoReleaser config, and a master release workflow
Docs Added .docs/internal/dev-guide.md and linked it from .docs/README.md
Lint cleanup Simplified recorder exit status lookup so the new staticcheck gate stays green

Files updated

  • .mise.toml
  • .golangci.yml
  • scripts/check.sh
  • scripts/local-check.sh
  • scripts/hooks/pre-push
  • .github/workflows/release.yml
  • .goreleaser.yml
  • release-please-config.json
  • .release-please-manifest.json
  • .docs/internal/dev-guide.md
  • .docs/README.md
  • internal/recorder/gpu.go

Validation

Scenario Outcome
mise run check Pass: build, vet, tests, golangci-lint 0 issues, govulncheck no called vulnerabilities, agnostic gate OK
scripts/local-check.sh --dry-run Pass: resolves This-Is-NPC/backstage and prints pending/success status calls
scripts/local-check.sh --pre-push --dry-run Pass: prints the background status-posting flow used by the hook
Pushed branch status Pass: local-check success on d5ed095ec98cf8cb76202c9767e236f6855d0d36
Branch protection Confirmed master requires strict local-check

Deviations

Criterion Deviation Rationale
Local GoReleaser config check goreleaser check was not run locally The local mise shim has no GoReleaser version configured; the GitHub workflow installs GoReleaser through goreleaser-action v6

Risks / follow-ups

  • The first release-please PR will be the live integration test for the GitHub release workflow and GoReleaser artifact upload.

References

  • Commits: 90b5114, d5ed095
  • Branch: feature/release

Use the embedded ExitError Sys helper directly so the recorder stays
clean under the new staticcheck gate without changing SIGINT handling.
Mirror the Omakiten workflow for Backstage: run the local
verification gate through mise, post local-check statuses from the
pre-push hook, and automate release-please plus GoReleaser releases
from master.
@This-Is-NPC
This-Is-NPC merged commit d153e6a into master Jun 7, 2026
1 check passed
@This-Is-NPC
This-Is-NPC deleted the feature/release branch June 7, 2026 22:43
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