This document describes how to create and publish releases for the Kuadrant MCP Server.
The project uses GitHub Actions to automatically build and publish Docker images:
- Continuous deployment: Every merge to
mainupdates the:latesttag - Release versions: Creating a GitHub release publishes versioned tags
Follow semantic versioning (MAJOR.MINOR.PATCH):
- MAJOR: Breaking changes to tools/resources API
- MINOR: New features, backward compatible
- PATCH: Bug fixes, documentation updates
Important: Tags must be valid semver format:
- Correct:
0.2.0,1.0.0,v1.2.3 - Wrong:
0.2,1.0,v1.2
- Go to Releases
- Click "Draft a new release"
- Choose a tag (create new):
- Format:
v1.2.3or1.2.3or0.1 - Both
v-prefixed and plain versions work
- Format:
- Set release title (e.g., "v1.2.3 - Feature Name")
- Add release notes:
- New features
- Bug fixes
- Breaking changes
- Credits
- Click "Publish release"
# Create and push a tag
git tag -a v1.2.3 -m "Release v1.2.3"
git push origin v1.2.3
# Create release with notes
gh release create v1.2.3 \
--title "v1.2.3 - Feature Name" \
--notes "## What's Changed
- Feature X added
- Bug Y fixed
- Breaking: Removed Z"Once the release is created, GitHub Actions will automatically:
- Build multi-platform Docker images (linux/amd64, linux/arm64)
- Push to GitHub Container Registry with tags:
ghcr.io/kuadrant/kuadrant-mcp-server:1.2.3(exact version)ghcr.io/kuadrant/kuadrant-mcp-server:1.2(minor version)ghcr.io/kuadrant/kuadrant-mcp-server:1(major version)
Check that images are published:
# Pull specific version
docker pull ghcr.io/kuadrant/kuadrant-mcp-server:1.2.3
# Verify it works
docker run --rm ghcr.io/kuadrant/kuadrant-mcp-server:1.2.3 --version## What's Changed
### New Features
- Feature description (#PR)
### Bug Fixes
- Fix description (#PR)
### Documentation
- Docs update (#PR)
### Breaking Changes
- Change description and migration path
### Credits
- @contributor1 - Feature X
- @contributor2 - Bug fix Y
Full Changelog: https://github.com/kuadrant/kuadrant-mcp-server/compare/v1.2.2...v1.2.3The main branch is continuously deployed:
- Every merge to
maintriggers a build - Updates the
:latestDocker tag - Available immediately at
ghcr.io/kuadrant/kuadrant-mcp-server:latest
Note: :latest may be unstable. For production use, pin to a specific version.
- Latest: Always tracks
mainbranch (may be unstable) - Major versions (e.g.,
:1): Latest release in that major version - Minor versions (e.g.,
:1.2): Latest patch in that minor version - Exact versions (e.g.,
:1.2.3): Immutable, specific release
Check the Actions tab for build logs.
- Tags are immutable once pushed
- To fix: Create a new patch version with the fix
- Never force-push or delete published tags
The workflow builds for both linux/amd64 and linux/arm64. If one fails:
- Check architecture-specific dependencies
- Test locally with:
docker buildx build --platform linux/arm64 .
Before creating a release:
- Update documentation if needed
- Run tests:
go test ./... - Build locally:
docker build -t test . - Test the Docker image:
docker run --rm test - Update CHANGELOG if maintained
- Check for security vulnerabilities:
go mod audit