This document describes how releases are automated for beads-tui.
When you push a version tag (e.g., v1.2.3), GitHub Actions runs GoReleaser which:
-
Builds binaries for 4 platforms:
- macOS Intel (
darwin_amd64) - macOS Apple Silicon (
darwin_arm64) - Linux x86_64 (
linux_amd64) - Linux ARM64 (
linux_arm64)
- macOS Intel (
-
Creates
.tar.gzarchives for each platform -
Generates
checksums.txtfor verification -
Creates a GitHub Release with changelog from commits
# Tag the current commit
git tag -a v1.2.3 -m "Release v1.2.3"
# Push the tag to trigger the workflow
git push origin v1.2.3The release will appear at: https://github.com/andynu/beads-tui/releases
.goreleaser.yaml- GoReleaser build configuration.github/workflows/release.yml- GitHub Actions workflow
Due to a GitHub bug affecting new repositories, the workflow uses a Personal Access Token instead of the default GITHUB_TOKEN.
- Secret Name:
RELEASE_TOKEN - Location: https://github.com/andynu/beads-tui/settings/secrets/actions
- Required Scope:
repo(full control of private repositories) - Current Expiration: ~90 days from 2025-11-25 (expires around 2025-02-23)
Once GitHub resolves Discussion #180369, edit .github/workflows/release.yml and change:
GITHUB_TOKEN: ${{ secrets.RELEASE_TOKEN }}to:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}Then the PAT will no longer be needed.
When the token expires, release workflows will fail. To renew:
-
Generate a new PAT:
- Go to https://github.com/settings/tokens
- Click "Generate new token" → "Generate new token (classic)"
- Name:
beads-tui releases(or similar) - Expiration: Choose desired duration
- Scopes: Select
repo - Click "Generate token" and copy it immediately
-
Update the repository secret:
- Go to https://github.com/andynu/beads-tui/settings/secrets/actions
- Click on
RELEASE_TOKEN - Click "Update secret"
- Paste the new token
- Click "Update secret"
You can test GoReleaser locally before pushing:
# Install goreleaser
go install github.com/goreleaser/goreleaser/v2@latest
# Validate config
goreleaser check
# Dry run (builds but doesn't publish)
goreleaser release --snapshot --cleanThis is the GitHub bug. Ensure RELEASE_TOKEN secret is set with a valid PAT.
Check the workflow logs at https://github.com/andynu/beads-tui/actions for build failures.
Run goreleaser check locally to validate .goreleaser.yaml.