feat: add nightly releases via GoReleaser and Homebrew tap#825
feat: add nightly releases via GoReleaser and Homebrew tap#825gtrrz-victor wants to merge 15 commits intomainfrom
Conversation
Add nightly build infrastructure that creates daily prerelease tags (e.g., v0.5.2-nightly.20260401) and routes them to separate entire-nightly cask/scoop entries using GoReleaser's .Prerelease template variable for conditional skip_upload. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
Adds automated nightly prerelease publishing that reuses the existing release pipeline, while routing package uploads/announcements differently for prereleases vs stable releases.
Changes:
- Add a scheduled + manual “nightly” workflow that creates a daily
vX.Y.Z-nightly.YYYYMMDDtag when new commits exist. - Update GoReleaser config to publish nightly builds to separate Homebrew/Scoop artifacts (
entire-nightly) and to skip Discord announcements for prereleases. - Update the release workflow to generate prerelease notes from
git logwhile still requiring CHANGELOG entries for stable releases.
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 2 comments.
| File | Description |
|---|---|
.goreleaser.yaml |
Adds nightly Homebrew cask + Scoop manifest and conditional upload/announce logic based on .Prerelease. |
.github/workflows/release.yml |
Generates release notes differently for prerelease vs stable tags and keeps stable CHANGELOG enforcement. |
.github/workflows/nightly.yml |
New scheduled workflow that creates/pushes a nightly prerelease tag when appropriate. |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Comment @cursor review or bugbot run to trigger another review on this PR
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Paulo Gomes <paulo@entire.io>
- Rename cask to entire@nightly (Homebrew @ convention) - Add cask conflicts between entire and entire@nightly - Add release.prerelease: auto for GitHub prerelease marking - Remove nightly scoop entry (defer to later) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Entire-Checkpoint: 304506803573
Nightly tags are now one patch ahead of the latest stable release (e.g., stable v0.5.4 → nightly v0.5.5-nightly.20260406.<commit>) so version ordering is clear between channels. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Entire-Checkpoint: 5cfe30222811
215806b to
60039ba
Compare
Move tag calculation to scripts/create-nightly-tag.sh and keep only git tag/push in the workflow step. Script outputs the tag to stdout, exits 2 to skip (tag already exists), or exits 1 on error. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Entire-Checkpoint: b802840318ae
Simplify skip_upload on stable entries by using the built-in auto mode which skips prerelease tags automatically. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Entire-Checkpoint: a8ed4b7f5aca
|
Nightly users now get update notifications for newer nightlies instead of being compared against stable releases. Each channel checks independently: stable uses /releases/latest, nightly scans /releases for the latest prerelease with a -nightly. tag. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Entire-Checkpoint: 5fce37dea825
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Entire-Checkpoint: 276ad5e3ed81
|
Fix: nightly tag push won't trigger release workflow
|
The default GITHUB_TOKEN cannot trigger other workflows. Use the GitHub App token so the nightly tag push triggers release.yml. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Entire-Checkpoint: dd3e143dc267
Separate the release notes generation into independent GitHub Actions steps with conditional execution. Nightly changelog now only includes commits since the last nightly tag, not the full diff from stable. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Entire-Checkpoint: e4b48203e68f
|
Refactor: split release notes into separate steps
|
Usage: mise run release vX.X.X Creates a stable tag and reuses scripts/create-nightly-tag.sh to generate a companion nightly tag on the same commit. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Entire-Checkpoint: 66c28c7d0433
|
Added
|
- Push stable tag before nightly in release task to avoid race - Remove stderr suppression on nightly script call - Simplify error handling pattern in nightly workflow - Remove unnecessary fetchErr intermediate variable - Fix tag glob to anchor on dot before commit hash - Use --sort=-creatordate for reliable nightly tag ordering - Add t.Parallel() to TestIsNightly Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Entire-Checkpoint: 7def65366a86
|
Addressed PR review findings (6 fixes) Critical:
Important:
|
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Entire-Checkpoint: 1b647b49bc8f

Summary
.github/workflows/nightly.yml) that creates daily prerelease tags when new commits existv0.5.4→ nightlyv0.5.5-nightly.20260406.<commit>entire@nightlyHomebrew cask with conditionalskip_uploadusing GoReleaser's.Prereleasetemplate variableconflictsbetweenentireandentire@nightlycasks to prevent both being installedrelease.prerelease: autoso nightly GitHub releases are marked as prereleasesHow it works
.Prereleaseroutes uploads: stable tags →entirecask, nightly tags →entire@nightlycask/releases/latestfor stable,/releases(filtered) for nightlyVersion scheme
Note
The
scripts/install.shcurl-based installer does not support the nightly channel.Test plan
goreleaser release --snapshot --cleanworkflow_dispatchentireio/homebrew-tapafter first nightly rungo test ./cmd/entire/cli/versioncheck/ -v🤖 Generated with Claude Code