This document describes the process for cutting a new release of Soroban Pulse.
Soroban Pulse follows Semantic Versioning:
- MAJOR version for incompatible API changes
- MINOR version for new functionality in a backward-compatible manner
- PATCH version for backward-compatible bug fixes
-
Create a new branch for the release:
git checkout -b release/v{VERSION} -
Update
Cargo.tomlwith the new version:[package] version = "{VERSION}"
-
Update
CHANGELOG.md:- Move items from
[Unreleased]section to a new[{VERSION}] - {DATE}section - Use the format:
## [{VERSION}] - YYYY-MM-DD - Ensure all changes are documented under appropriate categories: Added, Changed, Deprecated, Removed, Fixed, Security
- Update the comparison links at the bottom:
[Unreleased]: https://github.com/Soroban-Pulse/SorobanPulse/compare/v{VERSION}...HEAD [{VERSION}]: https://github.com/Soroban-Pulse/SorobanPulse/releases/tag/v{VERSION}
- Move items from
-
Commit the changes:
git add Cargo.toml Cargo.lock CHANGELOG.md git commit -m "chore: Prepare release v{VERSION}"
-
Push the release branch:
git push -u origin release/v{VERSION} -
Create a pull request with:
- Title:
Release v{VERSION} - Description: Include a summary of changes from the CHANGELOG
- Link to the CHANGELOG section for this release
- Title:
-
Ensure all CI checks pass (fmt, clippy, test, integration-tests, build)
-
Get approval from at least one maintainer
-
Merge the PR to
main
-
Checkout main and pull the latest changes:
git checkout main git pull origin main
-
Create an annotated tag:
git tag -a v{VERSION} -m "Release v{VERSION}" -
Push the tag:
git push origin v{VERSION}
-
Go to Releases
-
Click "Draft a new release"
-
Select the tag
v{VERSION} -
Set the title to
v{VERSION} -
Copy the CHANGELOG section for this release into the description
-
If this is a pre-release (alpha, beta, rc), check "Set as a pre-release"
-
Click "Publish release"
The Docker image is automatically built and pushed to ghcr.io/Soroban-Pulse/SorobanPulse when:
- A commit is pushed to
main - All CI checks pass
The image is tagged with:
latest(for the most recent release){VERSION}(semantic version tag){COMMIT_SHA}(full commit SHA)
To manually build and push:
docker build -t ghcr.io/Soroban-Pulse/SorobanPulse:v{VERSION} .
docker push ghcr.io/Soroban-Pulse/SorobanPulse:v{VERSION}When updating the CHANGELOG, use these categories:
- Added: New features
- Changed: Changes in existing functionality
- Deprecated: Soon-to-be removed features
- Removed: Removed features
- Fixed: Bug fixes
- Security: Security vulnerability fixes
## [0.2.0] - 2026-05-15
### Added
- New feature X
- New feature Y
### Changed
- Modified behavior of endpoint Z
### Fixed
- Fixed bug in event indexing
- Fixed race condition in pool metrics
### Security
- Updated dependencies to patch CVE-XXXX-XXXXXIf a release needs to be rolled back:
- Delete the GitHub release
- Delete the git tag:
git push origin --delete v{VERSION} - Revert the merge commit on main:
git revert -m 1 {COMMIT_SHA} - Push the revert:
git push origin main
For questions about the release process, please open an issue or contact the maintainers.