Skip to main content
This document describes the automated and manual release process for MCP Server LangGraph.

Overview

The project uses automated GitHub Actions workflows to:
  1. Build and publish Docker images
  2. Package and publish Helm charts
  3. Automatically update deployment configuration versions
  4. Publish to PyPI
  5. 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:
  1. Extracts CHANGELOG content from CHANGELOG.md for the release version
  2. Adds deployment instructions (Docker pull, Helm commands, documentation links)
  3. Creates the GitHub release with comprehensive description
  4. Falls back to commit log if CHANGELOG section not found (with warning)
Example: For release 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:
  1. Extracts the version from the release tag (e.g., v2.5.02.5.0)
  2. Updates all deployment files:
    • pyproject.toml - Python package version
    • package.json - npm package version
    • src/mcp_server_langgraph/core/config.py - service_version
    • .mcp/manifest.json - MCP manifest version
    • docker-compose.yml - Version comment
    • deployments/kubernetes/base/deployment.yaml - Container image tag
    • deployments/helm/mcp-server-langgraph/Chart.yaml - Chart version and appVersion
    • deployments/helm/mcp-server-langgraph/values.yaml - Image tag
    • deployments/kustomize/base/kustomization.yaml - Image tag
  3. Commits the changes to the main branch
  4. Adds a comment to the release with deployment commands

Triggering a Release

Option 1: GitHub UI (Recommended)
  1. Go to https://github.com/vishnu2kmohan/mcp-server-langgraph/releases/new
  2. Click “Choose a tag”
  3. Create a new tag following semantic versioning (e.g., v2.5.0)
  4. Fill in the release title (e.g., “Release v2.5.0”)
  5. Add release notes (GitHub will auto-generate from commits)
  6. Click “Publish release”
The workflow will automatically:
  • 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
Tag format: v{major}.{minor}.{patch}[-{prerelease}] Examples:
  • v2.5.0 - Standard release
  • v2.5.1 - Patch release
  • v3.0.0 - Major release (breaking changes)
  • v2.5.0-beta.1 - Beta pre-release
  • v2.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
Creating a pre-release:

Manual Version Bumping

If you need to update versions manually (outside of a release):

Using the Script

Using GitHub Actions (Manual Trigger)

  1. Go to: https://github.com/vishnu2kmohan/mcp-server-langgraph/actions/workflows/bump-deployment-versions.yaml
  2. Click “Run workflow”
  3. Enter the version (e.g., 2.5.0 or v2.5.0)
  4. Click “Run workflow”
The workflow will:
  • 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
  • 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

  1. Check workflow logs: https://github.com/vishnu2kmohan/mcp-server-langgraph/actions
  2. Common issues:
    • Invalid version format → Fix tag and re-run
    • Permission denied → Check GITHUB_TOKEN permissions
    • Merge conflict → Manually resolve and push
Manual fix:

Docker Image Build Failed

  1. Check build logs in GitHub Actions
  2. Common issues:
    • Dependency installation failure → Update requirements.txt
    • Platform-specific build error → Check Dockerfile
    • Registry authentication → Check GITHUB_TOKEN
Manual build:

Helm Chart Publication Failed

  1. Check Helm packaging in workflow logs
  2. Common issues:
    • Chart validation error → Run helm lint deployments/helm/mcp-server-langgraph
    • OCI push failure → Check registry authentication
Manual publish:

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:
  1. Create environment-specific workflows in .github/workflows/
  2. Use deployment environments in GitHub
  3. Add approval gates for production
  4. Integrate with ArgoCD or Flux for GitOps
Example: .github/workflows/deploy-staging.yaml

Best Practices

  1. Always test releases in staging first
  2. Use pre-release versions for testing (beta, rc)
  3. Keep CHANGELOG.md updated with each release
  4. Tag commits after merging to main, not on feature branches
  5. Use semantic versioning consistently
  6. Document breaking changes prominently
  7. Automate deployment to staging, manual to production
  8. 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