This document describes the process for releasing new versions of the VistarClient gem.
We follow Semantic Versioning 2.0.0:
- MAJOR (x.0.0): Breaking changes to public API
- MINOR (0.x.0): New features, backward compatible
- PATCH (0.0.x): Bug fixes, backward compatible
- All tests passing (
bundle exec rspec) - RuboCop clean (
bundle exec rubocop) - Coverage ≥95% (check SimpleCov report)
- CHANGELOG.md updated with changes
- Version bumped in
lib/vistar_client/version.rb - Documentation updated (if API changes)
- README updated (if needed)
- All PRs merged to
main
# Edit version
vim lib/vistar_client/version.rb
# Update CHANGELOG.md
vim CHANGELOG.mdgit add lib/vistar_client/version.rb CHANGELOG.md
git commit -m "Bump version to X.Y.Z"
git push origin maingit tag -a vX.Y.Z -m "Release version X.Y.Z"
git push origin vX.Y.ZThe GitHub Actions workflow will automatically:
- Run tests
- Build the gem
- Publish to RubyGems.org
- Create GitHub release
- Check RubyGems.org
- Check GitHub Releases
- Test installation:
gem install vistar_client
If a critical issue is found:
# Yank the gem (discouraged, only for critical security issues)
gem yank vistar_client -v X.Y.Z
# Release a patch version with fix immediatelyFor maintainers: Add RUBYGEMS_API_KEY to GitHub Secrets:
- Get API key from RubyGems.org profile
- Go to repo Settings → Secrets and variables → Actions
- Click "New repository secret"
- Name:
RUBYGEMS_API_KEY - Value: Your API key
- Click "Add secret"
When releasing version X.Y.Z:
## Release X.Y.Z
- [ ] Tests passing
- [ ] RuboCop clean
- [ ] Coverage ≥95%
- [ ] CHANGELOG.md updated
- [ ] Version bumped
- [ ] Committed and pushed to main
- [ ] Tag created: vX.Y.Z
- [ ] Tag pushed
- [ ] CI/CD passed
- [ ] Gem published to RubyGems
- [ ] GitHub release created
- [ ] Installation verified- Removing public methods
- Changing method signatures
- Changing return values in breaking ways
- Renaming classes or modules
- Changing constructor arguments
- Adding new public methods
- Adding new classes
- Adding optional parameters
- Deprecating features (with warnings)
- Internal improvements with no public API changes
- Fixing bugs
- Updating documentation
- Refactoring internal code
- Updating dependencies (non-breaking)
- Performance improvements
After release:
- Announce on relevant channels (if applicable)
- Update documentation sites if needed
- Monitor for issues in first 24-48 hours
- Respond to bug reports promptly
For critical bugs in production:
- Create hotfix branch from affected version tag
- Fix the bug
- Run full test suite
- Bump PATCH version
- Follow normal release process
- Merge hotfix back to main