Quick reference for creating releases of the Neutrino API Server.
- Push access to the repository
- All tests passing on main branch
- Updated CHANGELOG.md
# Update CHANGELOG.md with release notes
vim CHANGELOG.md
# Commit changes
git add CHANGELOG.md
git commit -m "Prepare release v1.0.0"
git push origin main# Build deterministic binaries and sign checksum file
./scripts/release-build-sign.sh v1.0.0 --key 1C53A412D11EF3051704419C44912E1E03005B31
# Commit signed digest artifacts
git add signatures/v1.0.0/
git commit -m "Add signed checksums for v1.0.0"
git push origin main# Create annotated tag
git tag -a v1.0.0 -m "Release v1.0.0
Built with Neutrino v0.16.0
Changes:
- Feature 1
- Feature 2
- Bug fix 3
"
# Push tag to trigger release workflow
git push origin v1.0.0The GitHub Actions workflow will automatically:
-
Build Binaries for:
- Linux (amd64, 386, arm64, armv7, armv6)
- macOS (amd64, arm64)
- Windows (amd64, arm64)
-
Build Docker Images for:
- linux/amd64
- linux/386
- linux/arm64
- linux/arm/v7
- linux/arm/v6
-
Create GitHub Release with:
- All binaries
- SHA256SUMS file
- SHA256SUMS.asc signature
- Release notes
-
Push Docker Images to:
ghcr.io/m0wer/neutrino-api:v1.0.0ghcr.io/m0wer/neutrino-api:v1.0ghcr.io/m0wer/neutrino-api:v1ghcr.io/m0wer/neutrino-api:latest(if main branch)
Monitor at: https://github.com/m0wer/neutrino-api/actions
# Check GitHub release page
open https://github.com/m0wer/neutrino-api/releases
# Test binary download
wget https://github.com/m0wer/neutrino-api/releases/download/v1.0.0/neutrinod-linux-amd64
chmod +x neutrinod-linux-amd64
./neutrinod-linux-amd64 --version
# Verify signed checksums
wget https://github.com/m0wer/neutrino-api/releases/download/v1.0.0/SHA256SUMS
wget https://github.com/m0wer/neutrino-api/releases/download/v1.0.0/SHA256SUMS.asc
gpg --import signatures/pubkeys/1C53A412D11EF3051704419C44912E1E03005B31.asc
gpg --verify SHA256SUMS.asc SHA256SUMS
sha256sum -c SHA256SUMS
# Reproduce all binaries locally and compare to the signed digest
./scripts/verify-release-build.sh v1.0.0
# Test Docker image
docker pull ghcr.io/m0wer/neutrino-api:v1.0.0
docker run --rm ghcr.io/m0wer/neutrino-api:v1.0.0 neutrinod --version- Update project README if needed
- Post in relevant communities
- Update documentation site (if applicable)
Bug fixes, documentation updates:
git tag -a v1.0.1 -m "Release v1.0.1 - Bug fixes"
git push origin v1.0.1New features, non-breaking changes:
git tag -a v1.1.0 -m "Release v1.1.0 - New features"
git push origin v1.1.0Breaking changes, API changes:
git tag -a v2.0.0 -m "Release v2.0.0 - Breaking changes"
git push origin v2.0.0git tag -a v1.1.0-rc1 -m "Release v1.1.0-rc1"
git push origin v1.1.0-rc1git tag -a v1.1.0-beta1 -m "Release v1.1.0-beta1"
git push origin v1.1.0-beta1When a new upstream Neutrino version is released:
# 1. Update dependencies
cd neutrino_server
go get github.com/lightninglabs/neutrino@v0.17.0
go mod tidy
# 2. Update version constant
vim cmd/neutrinod/main.go
# Change: neutrinoVersion = "v0.17.0"
# 3. Test thoroughly
go test ./...
docker compose up -d --build
# ... test all networks ...
# 4. Update CHANGELOG
vim ../CHANGELOG.md
# Add: Upgraded to Neutrino v0.17.0
# 5. Create release
git add .
git commit -m "Upgrade to Neutrino v0.17.0"
git push origin main
git tag -a v2.0.0 -m "Release v2.0.0 - Neutrino v0.17.0"
git push origin v2.0.0- Check workflow logs:
https://github.com/m0wer/neutrino-api/actions - Common issues:
- Tests failing: Fix and push new commit
- Build errors: Check Go version, dependencies
- Docker errors: Check Dockerfile, permissions
# Delete local tag
git tag -d v1.0.0
# Delete remote tag
git push origin :refs/tags/v1.0.0
# Create new tag
git tag -a v1.0.0 -m "Release v1.0.0"
git push origin v1.0.0If a release has critical issues:
- Mark GitHub release as pre-release
- Create hotfix branch
- Fix issue
- Create new patch release (e.g., v1.0.1)
- Deprecate old release in notes
Before creating a release:
- All tests passing on main
- CHANGELOG.md updated
- Documentation updated
- Version number follows semver
- Neutrino version documented
- Breaking changes documented (if major release)
- Migration guide provided (if major release)
- Pre-commit hooks passing
- Docker image builds locally
- API tested manually
After creating a release:
- GitHub release created
- Binaries downloadable
- Docker images pushed
- SHA256SUMS verified
- Release notes accurate
- Latest tag points to correct version
- Documentation reflects new version