This document describes how to create releases for the OData MCP Bridge.
The simplest way to create a release is to push a git tag:
# Create and push a tag
git tag -a v1.0.0 -m "Release v1.0.0"
git push origin v1.0.0
# Or use the Makefile
make release TAG=v1.0.0This will trigger the GitHub Actions workflow that:
- Builds binaries for all platforms
- Creates release archives
- Generates checksums
- Creates a GitHub release with all artifacts
- Go to the repository's Actions tab
- Select "Manual Release" workflow
- Click "Run workflow"
- Enter the version (e.g.,
v1.0.0) - Choose whether to create as draft
- Run the workflow
If you have the GitHub CLI installed:
# Create a release with the CLI
gh release create v1.0.0 --generate-notesWhen you push a tag starting with v, the release workflow:
-
Builds on multiple platforms:
- Linux (amd64)
- Windows (amd64)
- macOS (Intel and Apple Silicon)
-
Creates archives:
.tar.gzfor Linux and macOS.zipfor Windows
-
Generates checksums:
- SHA256 checksums for all files
-
Creates GitHub release:
- Includes all binaries
- Adds installation instructions
- Publishes as draft for review
The project uses semantic versioning (MAJOR.MINOR.PATCH):
- MAJOR: Breaking changes
- MINOR: New features (backwards compatible)
- PATCH: Bug fixes
Development builds use: 0.1.<commit-count>
To create release archives locally:
# Build all platforms and create archives
make release-local
# Files will be in dist/
ls -la dist/Before creating a release:
- Update CHANGELOG.md with release notes
- Run all tests:
make test - Build all platforms:
make build-all - Test binaries on target platforms
- Commit all changes
- Push to main branch
After the release is created:
- Verify all artifacts are uploaded
- Test download links
- Update documentation if needed
- Announce the release
- Check GitHub Actions logs
- Ensure Go version is compatible
- Verify all tests pass locally
- Check build logs for errors
- Ensure all platforms built successfully
- Verify upload steps completed
- Ensure tag doesn't already exist
- Pull latest changes before tagging
- Use unique version numbers