This document describes the release process for gpt-load.
The release process is semi-automated using GitHub Actions. When a new tag is pushed, the workflow automatically builds binaries for all supported platforms and creates a draft release. The release notes must be manually added before publishing.
When you push a tag (e.g., v1.0.0), the GitHub Actions workflow (.github/workflows/release.yml) automatically:
- Collects PGO (Profile-Guided Optimization) profile from tests and benchmarks
- Builds the frontend once and shares it across all platform builds
- Builds optimized binaries for all supported platforms:
- Linux (amd64, arm64)
- macOS (amd64, arm64)
- Windows (amd64)
- Creates a draft release with all binaries attached
- Does NOT generate release notes automatically (to avoid duplication and allow manual curation)
After the automated workflow completes, you must:
- Go to the Releases page on GitHub
- Find the draft release created by the workflow
- Edit the draft release
- Add release notes manually (see format below)
- Review the attached binaries
- Publish the release
Release notes should follow this structure:
## What's New
- List new features and enhancements
- Use bullet points for clarity
## Bug Fixes
- List bug fixes
- Reference issue numbers when applicable (#123)
## Breaking Changes
- List any breaking changes
- Provide migration instructions if needed
## Performance Improvements
- List performance improvements
- Include benchmark results if available
## Dependencies
- List major dependency updates
## Full Changelog
**Full Changelog**: https://github.com/xunxun1982/gpt-load/compare/v1.0.0...v1.1.0Follow Semantic Versioning:
- MAJOR version: Incompatible API changes
- MINOR version: New functionality in a backward-compatible manner
- PATCH version: Backward-compatible bug fixes
Examples: v1.0.0, v1.2.3, v2.0.0-beta.1
Before publishing a release:
- All tests pass
- Release notes are complete and accurate
- Version number follows semantic versioning
- Breaking changes are clearly documented
- All binaries are attached and named correctly
- Download links work correctly
- Documentation is updated (if needed)
To create a new release:
# Ensure you're on the main branch and up to date
git checkout main
git pull origin main
# Create and push a new tag
git tag v1.0.0
git push origin v1.0.0The GitHub Actions workflow will automatically start building the release.
Binaries follow this naming pattern:
gpt-load-linux-amd64gpt-load-linux-arm64gpt-load-macos-amd64gpt-load-macos-arm64gpt-load-windows-amd64.exe
After publishing a release:
- Verify download links work
- Test binaries on different platforms (if possible)
- Update documentation if needed
- Announce the release (if applicable)
If the workflow fails:
- Check the Actions tab for error details
- Fix the issue
- Delete the failed tag:
git tag -d v1.0.0 && git push origin :refs/tags/v1.0.0 - Create a new tag after fixing the issue
- Draft releases are not visible to the public until published
- You can edit draft releases multiple times before publishing
- Release notes are not auto-generated to allow for manual curation and quality control
- The workflow uses PGO optimization for better performance (3-7% improvement)