Developer Guide & Additional Workflows
This guide provides comprehensive information for developers working with the slack-mcp-server CI/CD system, including troubleshooting, configuration management, specialized workflows, and best practices.
Using the Release System
Configuring a Release
Edit .github/tag_and_release/intent.yaml to configure your release:
# Example: Patch release with selective docs versioning
release: true
level: "patch"
artifacts:
python: "auto"
docker: "auto"
docs:
mode: "auto"
sections: ["docs", "dev"] # Only version docs and dev sections
strategy: "changed" # Only version if changes detected
notes: "Patch release with selective documentation versioning"
Triggering Releases
Automatic Release (Push to master)
git push origin master
# Triggers release workflow automatically
Manual Release (GitHub UI)
- Go to Actions → Release
- Click "Run workflow"
- Optionally override intent configuration
Manual Release (CLI)
# Trigger release workflow manually
gh workflow run release.yml
# Trigger with custom parameters
gh workflow run release.yml \
--field release=true \
--field level=patch \
--field notes="Manual patch release"
Pre-Release Validation
For Pull Requests
- Release validation runs automatically on PRs to master
- Provides comprehensive validation without publishing
- Reviews security scan results and vulnerability reports
Manual Validation
# Trigger validation workflow manually
gh workflow run release-validate.yml
# Check validation status
gh run list --workflow=release-validate.yml --limit=5
Staging Releases
Deploy to Staging
# Manual staging release
gh workflow run release-staging.yml
# Check staging status
gh run list --workflow=release-staging.yml --limit=3
Staging Artifacts
- TestPyPI:
pip install -i https://test.pypi.org/simple/ slack-mcp-server - GHCR Staging:
docker pull ghcr.io/chisanan232/slack-mcp-server:1.0.0-rc.0 - Preview Docs: Available on docs-preview branch
Common Workflows
Release Preparation
- Update Code: Make your changes and ensure tests pass
- Configure Intent: Set release configuration in
intent.yaml - Validate: Create PR and review validation results
- Stage (Optional): Test in staging environment
- Release: Merge to master for automatic release
Hotfix Release Process
# 1. Create hotfix branch from master
git checkout master
git checkout -b hotfix/critical-fix
# 2. Make necessary changes
# ... make fixes ...
# 3. Configure for patch release
cat > .github/tag_and_release/intent.yaml << EOF
release: true
level: patch
artifacts:
python: force
docker: force
docs: skip
notes: "Hotfix: Critical security vulnerability"
EOF
# 4. Commit and push
git add .
git commit -m "fix: critical security vulnerability"
git push origin hotfix/critical-fix
# 5. Create PR and validate
gh pr create --title "Hotfix: Critical security fix" --body "Emergency patch release"
# 6. After validation passes, merge to master
gh pr merge --merge
Feature Release Process
# 1. Develop feature in branch
git checkout -b feature/new-capability
# 2. After development, configure for minor release
cat > .github/tag_and_release/intent.yaml << EOF
release: true
level: minor
artifacts:
python: auto
docker: auto
docs:
mode: auto
sections: ["docs", "dev"]
strategy: changed
notes: "New feature: Enhanced API capabilities"
EOF
# 3. Create PR for validation
gh pr create --title "feat: new API capabilities" --body "Adds new features with docs"
# 4. Test in staging first
gh workflow run release-staging.yml
# 5. After staging validation, merge to master
gh pr merge --merge
Troubleshooting
Git Synchronization Issues
Symptoms: Artifacts built with old version (0.0.0) instead of bumped version (0.0.1)
Root Cause: Downstream jobs used actions/checkout@v5 without ref parameter, defaulting to original commit SHA instead of latest commit with version bump.
Solution Applied: All workflows now use ref: ${{ github.ref_name }} to checkout latest branch state.
Fixed Workflows:
rw_python_package.yaml- Python package operationsrw_docker_operations.yaml- Docker image operationsrw_docs_operations.yaml- Documentation operationsrw_build_git-tag_and_create_github-release.yaml- Git taggingrelease-staging.yml- Staging releases
Impact: Python packages, Docker images, and docs now use correct bumped version
UV Lock File Synchronization
Enhancement: Version bump now automatically updates uv.lock file to maintain dependency synchronization
Process:
- After
uv version --bump, the workflow runsuv lockto update lock file - Both
pyproject.tomlanduv.lockare committed together in version bump - Ensures dependency lock file stays in sync with version changes
Documentation Versioning Issues
Problem: Documentation not updating after release Solutions:
- Verify
sectionsconfiguration matches actual docs structure - Use
strategy: "always"to force versioning regardless of changes - Check that Docusaurus plugin IDs in
sectionsarray exist indocusaurus.config.ts
Problem: Guard job failing Solutions:
- Check that release workflow uploaded the
release-docs-flagartifact - Verify artifact download permissions are correct
- Ensure workflow run ID is accessible