Skip to content

Commit 1ccfe8a

Browse files
committed
RELEASE notes
Signed-off-by: Jason Madigan <jason@jasonmadigan.com>
1 parent f6d802b commit 1ccfe8a

File tree

3 files changed

+182
-67
lines changed

3 files changed

+182
-67
lines changed

.github/workflows/docker.yml

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,13 @@ on:
66
- main
77
tags:
88
- 'v*'
9+
- '[0-9]+.[0-9]+'
10+
- '[0-9]+.[0-9]+.[0-9]+'
911
pull_request:
1012
branches:
1113
- main
14+
release:
15+
types: [created, published]
1216

1317
env:
1418
REGISTRY: ghcr.io
@@ -29,6 +33,7 @@ jobs:
2933
uses: docker/setup-buildx-action@v3
3034

3135
- name: Log in to the Container registry
36+
if: github.event_name != 'pull_request'
3237
uses: docker/login-action@v3
3338
with:
3439
registry: ${{ env.REGISTRY }}
@@ -41,18 +46,26 @@ jobs:
4146
with:
4247
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
4348
tags: |
44-
type=ref,event=branch
45-
type=ref,event=pr
49+
# :latest tag for main branch
50+
type=raw,value=latest,enable={{is_default_branch}}
51+
# version tags for releases (e.g., 0.1, 1.2.3, v1.0.0)
4652
type=semver,pattern={{version}}
4753
type=semver,pattern={{major}}.{{minor}}
48-
type=sha
54+
type=semver,pattern={{major}}
55+
# branch name for branches
56+
type=ref,event=branch
57+
# pr-123 for pull requests
58+
type=ref,event=pr
59+
# short sha for all builds
60+
type=sha,prefix={{branch}}-
4961
5062
- name: Build and push Docker image
5163
uses: docker/build-push-action@v5
5264
with:
5365
context: .
54-
push: true
66+
push: ${{ github.event_name != 'pull_request' }}
5567
tags: ${{ steps.meta.outputs.tags }}
5668
labels: ${{ steps.meta.outputs.labels }}
5769
cache-from: type=gha
58-
cache-to: type=gha,mode=max
70+
cache-to: type=gha,mode=max
71+
platforms: linux/amd64,linux/arm64

README.md

Lines changed: 30 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ A Model Context Protocol (MCP) server that generates Kuadrant policy manifests i
1010

1111
```bash
1212
# Add the MCP server using Docker (available in all projects)
13-
claude mcp add kuadrant docker run -i --rm ghcr.io/kuadrant/kuadrant-mcp-server:latest -s user
13+
claude mcp add -s user kuadrant "docker run -i --rm ghcr.io/kuadrant/kuadrant-mcp-server:latest"
1414

1515
# Verify installation
1616
claude mcp list
@@ -47,6 +47,11 @@ docker pull ghcr.io/kuadrant/kuadrant-mcp-server:latest
4747
```bash
4848
git clone https://github.com/kuadrant/kuadrant-mcp-server
4949
cd kuadrant-mcp-server
50+
51+
# Build binary
52+
go build -o kuadrant-mcp-server
53+
54+
# Or build Docker image
5055
docker build -t kuadrant-mcp-server:latest .
5156
```
5257

@@ -596,15 +601,6 @@ spec:
596601
- RateLimitPolicy: `kuadrant.io/v1`
597602
- AuthPolicy: `kuadrant.io/v1`
598603

599-
## Building from Source
600-
601-
```bash
602-
git clone https://github.com/kuadrant/kuadrant-mcp-server
603-
cd kuadrant-mcp-server
604-
go build -o kuadrant-mcp-server
605-
```
606-
607-
608604
## Claude Code CLI Setup
609605

610606
To use this server with Claude Code CLI:
@@ -613,7 +609,7 @@ To use this server with Claude Code CLI:
613609

614610
```bash
615611
# Add using Docker image
616-
claude mcp add kuadrant docker run -i --rm ghcr.io/kuadrant/kuadrant-mcp-server:latest -s user
612+
claude mcp add -s user kuadrant "docker run -i --rm ghcr.io/kuadrant/kuadrant-mcp-server:latest"
617613
618614
# Verify installation
619615
claude mcp list
@@ -624,36 +620,16 @@ claude # Start new session, type /mcp to see available servers
624620

625621
### Option 2: Using Local Binary
626622

627-
1. **Build the server**
628-
```bash
629-
go build -o kuadrant-mcp-server
630-
```
631-
632-
2. **Add to Claude Code**
633-
```bash
634-
claude mcp add kuadrant /path/to/kuadrant-mcp-server
635-
```
623+
```bash
624+
# Build the server
625+
go build -o kuadrant-mcp-server
636626
637-
For example:
638-
```bash
639-
claude mcp add kuadrant /Users/yourusername/kuadrant-mcp-server/kuadrant-mcp-server
640-
```
627+
# Add to Claude Code
628+
claude mcp add -s user kuadrant ./kuadrant-mcp-server
641629
642-
3. **Verify installation**
643-
```bash
644-
claude mcp list
645-
```
646-
647-
4. **Test in Claude**
648-
Start a new Claude session and type:
649-
```
650-
/mcp
651-
```
652-
653-
You should see "kuadrant" listed. Then try:
654-
```
655-
Create a Gateway manifest named 'test-gateway' in namespace 'default'
656-
```
630+
# Start using
631+
claude # Start new session, type /mcp to see available servers
632+
```
657633

658634
### Troubleshooting
659635

@@ -822,33 +798,25 @@ The update script:
822798

823799
For more details, see [UPDATE_DOCS.md](UPDATE_DOCS.md).
824800

825-
## MCP Configuration
801+
## Releases and Versioning
826802

827-
To use this server with an MCP client (like Claude Desktop), add it to your MCP configuration:
803+
See [RELEASE.md](RELEASE.md) for detailed release procedures.
828804

829-
Using the pre-built Docker image:
830-
```json
831-
{
832-
"mcpServers": {
833-
"kuadrant": {
834-
"command": "docker",
835-
"args": ["run", "-i", "--rm", "ghcr.io/kuadrant/kuadrant-mcp-server:latest"]
836-
}
837-
}
838-
}
839-
```
805+
**Available versions:**
806+
- `:latest` - Tracks main branch (may be unstable)
807+
- `:1.2.3` - Specific version (recommended for production)
808+
- `:1.2` - Latest patch in minor version
809+
- `:1` - Latest release in major version
840810

841-
Or if running the binary locally:
842-
```json
843-
{
844-
"mcpServers": {
845-
"kuadrant": {
846-
"command": "/path/to/kuadrant-mcp-server"
847-
}
848-
}
849-
}
811+
**Creating releases:**
812+
```bash
813+
# Tag and push
814+
git tag -a v1.2.3 -m "Release v1.2.3"
815+
git push origin v1.2.3
816+
817+
# GitHub automatically builds and publishes Docker images
850818
```
851819

852-
## License
820+
## Licence
853821

854822
Apache 2.0

RELEASE.md

Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
1+
# Release Process
2+
3+
This document describes how to create and publish releases for the Kuadrant MCP Server.
4+
5+
## Overview
6+
7+
The project uses GitHub Actions to automatically build and publish Docker images:
8+
- Continuous deployment: Every merge to `main` updates the `:latest` tag
9+
- Release versions: Creating a GitHub release publishes versioned tags
10+
11+
## Creating a Release
12+
13+
### 1. Choose Version Number
14+
15+
Follow semantic versioning (MAJOR.MINOR.PATCH):
16+
- MAJOR: Breaking changes to tools/resources API
17+
- MINOR: New features, backward compatible
18+
- PATCH: Bug fixes, documentation updates
19+
20+
### 2. Create GitHub Release
21+
22+
#### Option A: Via GitHub UI
23+
1. Go to [Releases](https://github.com/kuadrant/kuadrant-mcp-server/releases)
24+
2. Click "Draft a new release"
25+
3. Choose a tag (create new):
26+
- Format: `v1.2.3` or `1.2.3` or `0.1`
27+
- Both `v`-prefixed and plain versions work
28+
4. Set release title (e.g., "v1.2.3 - Feature Name")
29+
5. Add release notes:
30+
- New features
31+
- Bug fixes
32+
- Breaking changes
33+
- Credits
34+
6. Click "Publish release"
35+
36+
#### Option B: Via GitHub CLI
37+
```bash
38+
# Create and push a tag
39+
git tag -a v1.2.3 -m "Release v1.2.3"
40+
git push origin v1.2.3
41+
42+
# Create release with notes
43+
gh release create v1.2.3 \
44+
--title "v1.2.3 - Feature Name" \
45+
--notes "## What's Changed
46+
- Feature X added
47+
- Bug Y fixed
48+
- Breaking: Removed Z"
49+
```
50+
51+
### 3. Automated Publishing
52+
53+
Once the release is created, GitHub Actions will automatically:
54+
1. Build multi-platform Docker images (linux/amd64, linux/arm64)
55+
2. Push to GitHub Container Registry with tags:
56+
- `ghcr.io/kuadrant/kuadrant-mcp-server:1.2.3` (exact version)
57+
- `ghcr.io/kuadrant/kuadrant-mcp-server:1.2` (minor version)
58+
- `ghcr.io/kuadrant/kuadrant-mcp-server:1` (major version)
59+
60+
### 4. Verify Release
61+
62+
Check that images are published:
63+
```bash
64+
# Pull specific version
65+
docker pull ghcr.io/kuadrant/kuadrant-mcp-server:1.2.3
66+
67+
# Verify it works
68+
docker run --rm ghcr.io/kuadrant/kuadrant-mcp-server:1.2.3 --version
69+
```
70+
71+
## Release Notes Template
72+
73+
```markdown
74+
## What's Changed
75+
76+
### New Features
77+
- Feature description (#PR)
78+
79+
### Bug Fixes
80+
- Fix description (#PR)
81+
82+
### Documentation
83+
- Docs update (#PR)
84+
85+
### Breaking Changes
86+
- Change description and migration path
87+
88+
### Credits
89+
- @contributor1 - Feature X
90+
- @contributor2 - Bug fix Y
91+
92+
Full Changelog: https://github.com/kuadrant/kuadrant-mcp-server/compare/v1.2.2...v1.2.3
93+
```
94+
95+
## Continuous Deployment
96+
97+
The `main` branch is continuously deployed:
98+
- Every merge to `main` triggers a build
99+
- Updates the `:latest` Docker tag
100+
- Available immediately at `ghcr.io/kuadrant/kuadrant-mcp-server:latest`
101+
102+
Note: `:latest` may be unstable. For production use, pin to a specific version.
103+
104+
## Version Support
105+
106+
- Latest: Always tracks `main` branch (may be unstable)
107+
- Major versions (e.g., `:1`): Latest release in that major version
108+
- Minor versions (e.g., `:1.2`): Latest patch in that minor version
109+
- Exact versions (e.g., `:1.2.3`): Immutable, specific release
110+
111+
## Troubleshooting
112+
113+
### Docker Build Failed
114+
Check the [Actions tab](https://github.com/kuadrant/kuadrant-mcp-server/actions) for build logs.
115+
116+
### Wrong Version Published
117+
- Tags are immutable once pushed
118+
- To fix: Create a new patch version with the fix
119+
- Never force-push or delete published tags
120+
121+
### Multi-platform Issues
122+
The workflow builds for both `linux/amd64` and `linux/arm64`. If one fails:
123+
1. Check architecture-specific dependencies
124+
2. Test locally with: `docker buildx build --platform linux/arm64 .`
125+
126+
## Pre-release Checklist
127+
128+
Before creating a release:
129+
- [ ] Update documentation if needed
130+
- [ ] Run tests: `go test ./...`
131+
- [ ] Build locally: `docker build -t test .`
132+
- [ ] Test the Docker image: `docker run --rm test`
133+
- [ ] Update CHANGELOG if maintained
134+
- [ ] Check for security vulnerabilities: `go mod audit`

0 commit comments

Comments
 (0)