This document describes the versioning strategy for the Neutrino API Server.
We use semantic versioning with a reference to the upstream Neutrino version:
v<MAJOR>.<MINOR>.<PATCH>-neutrino<UPSTREAM_VERSION>+build.<BUILD>
v1.0.0-neutrino0.16.0- First release based on Neutrino v0.16.0v1.0.1-neutrino0.16.0- Bug fix for our wrapper, still using Neutrino v0.16.0v1.1.0-neutrino0.16.0- New feature in our wrapper, still using Neutrino v0.16.0v2.0.0-neutrino0.17.0- Breaking change or upgrade to Neutrino v0.17.0
This tracks our changes to the API wrapper:
- MAJOR: Breaking changes to the REST API or Docker configuration
- MINOR: New features, new API endpoints, non-breaking changes
- PATCH: Bug fixes, documentation updates, minor improvements
The -neutrino<VERSION> suffix indicates which version of the underlying
lightninglabs/neutrino library
we're using.
Optional +build.<NUMBER> suffix for multiple builds of the same version
(e.g., different optimizations, security patches).
When preparing a release, update the version in:
// neutrino_server/cmd/neutrinod/main.go
var (
neutrinoVersion = "v0.16.0" // Update this when upgrading neutrino
)Before tagging, build artifacts locally and sign the checksum file:
./scripts/release-build-sign.sh v1.0.0 --key 1C53A412D11EF3051704419C44912E1E03005B31
git add signatures/v1.0.0/
git commit -m "Add signed checksums for v1.0.0"
git push origin mainTags should follow the format v<MAJOR>.<MINOR>.<PATCH>:
git tag -a v1.0.0 -m "Release v1.0.0 based on Neutrino v0.16.0"
git push origin v1.0.0The GitHub Actions workflow (.github/workflows/release.yaml) will:
- Build binaries for multiple platforms (Linux, macOS, Windows on amd64/arm64)
- Create Docker images for multiple architectures
- Regenerate SHA256 checksums and verify they exactly match
signatures/<version>/SHA256SUMS - Verify
signatures/<version>/SHA256SUMS.ascwith keys insignatures/pubkeys/ - Create a GitHub release with all artifacts, including
SHA256SUMSandSHA256SUMS.asc
Users can reproduce and verify locally with:
./scripts/verify-release-build.sh v1.0.0When a new version of Neutrino is released:
-
Update
go.mod:cd neutrino_server go get github.com/lightninglabs/neutrino@v0.17.0 go mod tidy -
Update the version constant in
main.go:neutrinoVersion = "v0.17.0"
-
Test thoroughly with all networks (mainnet, testnet, regtest, signet)
-
Create a new release (usually MAJOR or MINOR bump)
Maintain a CHANGELOG.md to track:
- Neutrino version upgrades
- New API endpoints
- Bug fixes
- Breaking changes
- Performance improvements
Users can check version information:
# From binary
./neutrinod --version
# From Docker
docker run neutrino-api:latest --version
# From API
curl http://localhost:8334/v1/statusRecommended tagging strategy:
| Tag Pattern | Description | Example |
|---|---|---|
v*.*.* |
Full release | v1.2.3 |
v*.*.*-rc* |
Release candidate | v1.2.3-rc1 |
v*.*.*-beta* |
Beta release | v1.2.3-beta1 |
v*.*.*-alpha* |
Alpha release | v1.2.3-alpha1 |
- Latest version receives active support
- Previous MAJOR version receives security updates for 6 months
- Older versions are community-supported
Security patches are released as PATCH versions and backported to supported versions.