This document outlines the release process for ML Notes.
We follow Semantic Versioning:
- MAJOR version for incompatible API changes
- MINOR version for backwards-compatible functionality additions
- PATCH version for backwards-compatible bug fixes
- Update version number in relevant files
- Update CHANGELOG.md with release notes
- Run full test suite:
make test make lint - Build all platforms locally:
make build-all
- Test installation script:
./install.sh --version local
-
Create and push a tag:
git tag -a v1.0.0 -m "Release version 1.0.0" git push origin v1.0.0 -
Create GitHub Release:
- Go to Releases page
- Click "Draft a new release"
- Select the tag you created
- Title: "ML Notes v1.0.0"
- Generate release notes
- Add highlights and breaking changes
-
GitHub Actions will automatically:
- Run tests on multiple platforms
- Build binaries for all platforms
- Upload release artifacts
- Update release page
-
Verify release artifacts:
- Download and test each platform binary
- Test installation script with new version
-
Update documentation:
- Update README if needed
- Update wiki/documentation site
-
Announce release:
- Social media
- Community forums
- Mailing list (if applicable)
# ML Notes v1.0.0
## 🎉 Highlights
- Major feature or improvement
- Another significant change
## ✨ New Features
- Feature 1 (#PR)
- Feature 2 (#PR)
## 🐛 Bug Fixes
- Fix 1 (#PR)
- Fix 2 (#PR)
## 🔧 Improvements
- Improvement 1 (#PR)
- Improvement 2 (#PR)
## 📚 Documentation
- Doc update 1 (#PR)
- Doc update 2 (#PR)
## ⚠️ Breaking Changes
- Breaking change description
## 🔄 Migration Guide
If there are breaking changes, provide migration instructions.
## 📦 Installation
### Using the install script:
\```bash
curl -sSL https://raw.githubusercontent.com/streed/ml-notes/main/install.sh | bash
\```
### Manual download:
Download the appropriate binary for your platform from the [releases page](https://github.com/streed/ml-notes/releases/tag/v1.0.0).
## 🙏 Contributors
Thanks to all contributors who made this release possible!
@contributor1, @contributor2, ...
## 📊 Stats
- X commits
- Y files changed
- Z contributors
**Full Changelog**: https://github.com/streed/ml-notes/compare/v0.9.0...v1.0.0| Platform | Architecture | Binary Name |
|---|---|---|
| Linux | AMD64 | ml-notes-linux-amd64 |
| Linux | ARM64 | ml-notes-linux-arm64 |
| macOS | AMD64 | ml-notes-darwin-amd64 |
| macOS | ARM64 | ml-notes-darwin-arm64 |
| Windows | AMD64 | ml-notes-windows-amd64.exe |
If GitHub Actions build fails:
- Check the workflow logs
- Ensure all tests pass locally
- Verify Go version compatibility
If release artifacts are missing:
- Check GitHub Actions completed successfully
- Manually build and upload if needed:
make release # Upload files from dist/release/
Test the installation script locally:
./install.sh --platform linux-amd64 --version v1.0.0For security updates:
- Follow responsible disclosure
- Prepare patches privately
- Release simultaneously with disclosure
- Update all supported versions
- Notify users via security advisory
If a release has critical issues:
- Mark the release as pre-release on GitHub
- Create a patch release with fixes
- Update installation script to skip bad version
- Notify users of the issue
The release process is largely automated via GitHub Actions:
- Tests run on every push
- Binaries build on tag push
- Release artifacts upload automatically
See .github/workflows/ci.yml for details.