-
Notifications
You must be signed in to change notification settings - Fork 0
Home
A release tool for Go. Only Go.
Status: early. letsgo releases itself, and reproducibility is proven across Linux, macOS and Windows on every push.
It builds your Go project, refuses to ship it if it's wrong, publishes it reproducibly, and lets anyone prove afterwards that the binaries match the source.
GoReleaser is a distribution tool. letsgo is an integrity tool. GoReleaser's job is getting your software to many places — Homebrew, Docker, deb, rpm, snap, AUR, Discord. It's very good at that. letsgo's job is proving a release is what it claims to be and never leaving it half-finished. The two overlap on "makes a GitHub release," but they optimise different things. If you need deb packages, snap or a dozen package managers, use GoReleaser for that repo.
| Page | Description |
|---|---|
| Commands | Every verb, and what each one is for |
| Configuration | Zero config, letsgo.mod, and the derived defaults |
| Reproducibility | Why builds are deterministic, and how verify uses it |
| Publishing |
install.sh, Homebrew taps, container images and the SBOM |
| GitHub Action | Running letsgo on a runner, and why the version is pinned |
| Self-update | Verified self-update for any binary letsgo released |
| Migrating from GoReleaser | What to delete, what to keep, what to expect |
| Design | The full rationale, including the alternatives rejected |
| Roadmap | Milestones, open questions, and how this should change |
go install github.com/danielriddell21/letsgo/cmd/letsgo@latestOr from the release itself, using the installer letsgo generated for it:
curl -fsSL https://github.com/danielriddell21/letsgo/releases/latest/download/install.sh | shThat script carries each archive's SHA-256, so it fails rather than installing a substituted archive. See Publishing.