Overview
The project uses automated GitHub Actions workflows to:- Build and publish Docker images
- Package and publish Helm charts
- Automatically update deployment configuration versions
- Publish to PyPI
- Update the MCP Registry
Automated Release Process
How It Works
When a new GitHub release is created, two automated workflows run:1. Release Notes Generation (.github/workflows/release.yaml)
The release workflow automatically:
- Extracts CHANGELOG content from
CHANGELOG.mdfor the release version - Adds deployment instructions (Docker pull, Helm commands, documentation links)
- Creates the GitHub release with comprehensive description
- Falls back to commit log if CHANGELOG section not found (with warning)
v2.6.0, the workflow extracts content between ## [2.6.0] and the next --- or ## [ in CHANGELOG.md
Important: Always update CHANGELOG.md before creating a release. The release description is automatically generated from it!
2. Version Bump Automation (bump-deployment-versions workflow)
When a new GitHub release is published, the bump-deployment-versions workflow automatically:
- Extracts the version from the release tag (e.g.,
v2.5.0→2.5.0) - Updates all deployment files:
pyproject.toml- Python package versionpackage.json- npm package versionsrc/mcp_server_langgraph/core/config.py- service_version.mcp/manifest.json- MCP manifest versiondocker-compose.yml- Version commentdeployments/kubernetes/base/deployment.yaml- Container image tagdeployments/helm/mcp-server-langgraph/Chart.yaml- Chart version and appVersiondeployments/helm/mcp-server-langgraph/values.yaml- Image tagdeployments/kustomize/base/kustomization.yaml- Image tag
- Commits the changes to the main branch
- Adds a comment to the release with deployment commands
Triggering a Release
Option 1: GitHub UI (Recommended)
- Go to https://github.com/vishnu2kmohan/mcp-server-langgraph/releases/new
- Click “Choose a tag”
- Create a new tag following semantic versioning (e.g.,
v2.5.0) - Fill in the release title (e.g., “Release v2.5.0”)
- Add release notes (GitHub will auto-generate from commits)
- Click “Publish release”
- Build Docker images for linux/amd64 and linux/arm64
- Push images to ghcr.io
- Package and publish Helm chart
- Update deployment versions
- Publish to PyPI (for non-prerelease versions)
Option 2: Git Tag + Push
Option 3: GitHub CLI
Version Format
Follow Semantic Versioning 2.0.0:- Major version (X.0.0): Breaking changes
- Minor version (0.X.0): New features, backward compatible
- Patch version (0.0.X): Bug fixes, backward compatible
v{major}.{minor}.{patch}[-{prerelease}]
Examples:
v2.5.0- Standard releasev2.5.1- Patch releasev3.0.0- Major release (breaking changes)v2.5.0-beta.1- Beta pre-releasev2.5.0-rc.1- Release candidate
Pre-release Versions
Pre-release versions (alpha, beta, rc) are handled specially:- ✅ Docker images are built and pushed
- ✅ Helm charts are packaged
- ✅ Deployment versions are updated
- ❌ Not published to PyPI
- ❌ Not marked as “latest” release
- ❌ Not published to MCP Registry
Manual Version Bumping
If you need to update versions manually (outside of a release):Using the Script
Using GitHub Actions (Manual Trigger)
- Go to: https://github.com/vishnu2kmohan/mcp-server-langgraph/actions/workflows/bump-deployment-versions.yaml
- Click “Run workflow”
- Enter the version (e.g.,
2.5.0orv2.5.0) - Click “Run workflow”
- Update all deployment files
- Commit changes
- Push to main branch
Deployment After Release
After a release is published and versions are updated, deploy using:Docker Compose
Kubernetes (kubectl)
Helm
Kustomize
Release Checklist
Before Release
- All tests passing in CI
- CHANGELOG.md updated with comprehensive release notes ⭐ IMPORTANT
- Add section header:
## [VERSION] - YYYY-MM-DD - Include overview section with key improvements
- Document all changes with detailed descriptions
- Add code examples and usage instructions where applicable
- Highlight benefits for users/developers/operations
- Document breaking changes clearly (if any)
- Include file references and statistics
- Add migration guide (for major versions)
- Note: Release descriptions are automatically generated from CHANGELOG.md
- Add section header:
- Version bumped in pyproject.toml (manual or via script)
- Documentation updated (if needed)
- Breaking changes documented (for major versions)
- Migration guide prepared (for major versions)
Creating the Release
- Create tag with correct version format (e.g.,
v2.5.0) - Publish release on GitHub
- Verify release workflows complete successfully
- Check Docker images are published to ghcr.io
- Verify Helm chart is published
- Confirm version bump commit is pushed to main
After Release
- Deploy to staging environment
- Run smoke tests
- Deploy to production (if applicable)
- Announce release (Slack, Discord, Twitter, etc.)
- Update documentation site (if hosted separately)
Troubleshooting
Version Bump Workflow Failed
- Check workflow logs: https://github.com/vishnu2kmohan/mcp-server-langgraph/actions
- Common issues:
- Invalid version format → Fix tag and re-run
- Permission denied → Check GITHUB_TOKEN permissions
- Merge conflict → Manually resolve and push
Docker Image Build Failed
- Check build logs in GitHub Actions
- Common issues:
- Dependency installation failure → Update requirements.txt
- Platform-specific build error → Check Dockerfile
- Registry authentication → Check GITHUB_TOKEN
Helm Chart Publication Failed
- Check Helm packaging in workflow logs
- Common issues:
- Chart validation error → Run
helm lint deployments/helm/mcp-server-langgraph - OCI push failure → Check registry authentication
- Chart validation error → Run
Version Mismatch
If deployment versions don’t match the release:Rollback
If you need to rollback a release:Rollback Deployment
Delete Release
Revert Version Bump
Continuous Deployment
For automated deployments to staging/production:- Create environment-specific workflows in
.github/workflows/ - Use deployment environments in GitHub
- Add approval gates for production
- Integrate with ArgoCD or Flux for GitOps
.github/workflows/deploy-staging.yaml
Best Practices
- Always test releases in staging first
- Use pre-release versions for testing (beta, rc)
- Keep CHANGELOG.md updated with each release
- Tag commits after merging to main, not on feature branches
- Use semantic versioning consistently
- Document breaking changes prominently
- Automate deployment to staging, manual to production
- Monitor after release (Grafana dashboards)
Security
- Docker images include SBOM (Software Bill of Materials)
- Images are scanned for vulnerabilities
- Only tagged releases are published to registries
- Use signed commits for release tags (recommended)
Resources
Last Updated: 2025-10-14 Current Version: 2.4.0