GoReleaser Wizard π
An interactive CLI tool that generates production-ready GoReleaser configurations for Go projects.

Stop copy-pasting configs. Stop guessing at YAML. Get a production-ready GoReleaser setup with one command.
β¨ Features
- π― Interactive wizard - Rich CLI prompts guide you through every option
- π§ Smart defaults - Detects your project structure automatically
- π GitHub Actions included - Complete CI/CD pipeline ready to go
- π¦ Multi-platform builds - Linux, macOS, Windows, ARM, and more
- π³ Docker support - Multi-stage container builds with security best practices
- πΊ Homebrew formulas - Automatic package manager formula generation
- π Security built-in - Code signing, SBOM generation, non-root containers
- β
Validation - Comprehensive configuration checking with detailed reporting
- π Preview mode - See generated configurations before writing files
- π Rollback support - Automatic cleanup if generation fails
π¬ Quick Start
# Install
go install github.com/LarsArtmann/GoReleaser-Wizard/cmd/goreleaser-wizard@latest
# Run the wizard
goreleaser-wizard init
# That's it! Your .goreleaser.yaml is ready
πΈ Demo
$ goreleaser-wizard init
π GoReleaser Configuration Wizard
Let's create the perfect GoReleaser config for your project!
? Project Name βΊ my-awesome-cli
? Project Description βΊ A fantastic CLI tool
? Project Type βΊ CLI Application
? Binary Name βΊ my-awesome-cli
? Main Package Path βΊ ./cmd/my-awesome-cli
? Target Platforms βΊ β linux β darwin β windows
? Target Architectures βΊ β amd64 β arm64
? Enable CGO? βΊ No (recommended)
? Embed Version Info? βΊ Yes (recommended)
? Git Provider βΊ GitHub
? Docker Images? βΊ Yes
? Code Signing? βΊ Yes
? Generate SBOM? βΊ Yes
β Created .goreleaser.yaml
β Created .github/workflows/release.yml
β¨ Setup Complete!
π οΈ Installation
Using Go
go install github.com/LarsArtmann/GoReleaser-Wizard/cmd/goreleaser-wizard@latest
From Source
git clone https://github.com/LarsArtmann/GoReleaser-Wizard.git
cd GoReleaser-Wizard
go build -o goreleaser-wizard ./cmd/goreleaser-wizard
Download Binary
Download the latest release from the releases page.
π Usage
Interactive Mode (Recommended)
The wizard will guide you through creating a perfect configuration:
goreleaser-wizard init
Options:
--force - Overwrite existing configuration
--minimal - Create minimal configuration
--pro - Include GoReleaser Pro features
Non-Interactive Mode
Perfect for CI/CD pipelines:
goreleaser-wizard generate \
--name my-project \
--binary my-app \
--platforms linux,darwin,windows \
--docker \
--github-action
Validate Configuration
Check your existing GoReleaser configuration:
goreleaser-wizard validate
# With fixes
goreleaser-wizard validate --fix
# Verbose output
goreleaser-wizard validate --verbose
π― What It Creates
.goreleaser.yaml
- Optimized build configuration
- Multi-platform support
- Archive generation
- Checksums and signatures
- Changelog generation
- Release configuration
.github/workflows/release.yml
- Automated releases on tags
- Docker image building
- Code signing with cosign
- SBOM generation
- Multi-platform builds
ποΈ Project Types
The wizard adapts to your project:
- CLI Application - Single binary with version info
- Web Service - Includes Docker configuration
- Library with CLI - Focuses on the CLI component
- Multiple Binaries - Configures multiple build targets
π§ Advanced Features
GoReleaser Pro Support
Enable Pro features during setup:
goreleaser-wizard init --pro
Adds support for:
- Custom publishers
- Advanced templating
- Nightlies
- Docker manifests
- And more!
Docker Integration
When Docker is enabled, the wizard:
- Detects your registry (ghcr.io, Docker Hub, etc.)
- Configures multi-platform images
- Sets up proper labels
- Handles authentication in CI/CD
Package Managers
Built-in support for:
- Homebrew - macOS/Linux formula with automatic naming
- Snap - Linux snap packages (planned)
- Scoop - Windows package manager (planned)
- AUR - Arch Linux (planned)
π§ͺ Testing Your Configuration
After generating your configuration:
# 1. Validate the configuration
goreleaser-wizard validate
# 2. Test build locally
goreleaser build --snapshot --clean
# 3. Create a tag
git tag -a v0.1.0 -m 'First release'
# 4. Push to trigger release
git push origin v0.1.0
π Examples
goreleaser-wizard generate \
--name simple-cli \
--binary simple \
--platforms linux,darwin
Full-Featured Web Service
goreleaser-wizard generate \
--name api-server \
--binary server \
--docker \
--signing \
--github-action \
--platforms linux,darwin,windows \
--architectures amd64,arm64
Library with CLI
goreleaser-wizard init --minimal
# Then select "Library with CLI" in the wizard
π€ Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing)
- Commit your changes (
git commit -m 'Add amazing feature')
- Push to the branch (
git push origin feature/amazing)
- Open a Pull Request
π License
This project is licensed under the MIT License - see the LICENSE file for details.
π Acknowledgments
- GoReleaser - The amazing release automation tool
- Charm - Beautiful terminal UI components
- Cobra - CLI framework
- Viper - Configuration management
π Links
Made with β€οΈ to simplify Go releases