* fix: Remove invalid colon in bash else statement - Fix bash syntax error in auto-version workflow - Remove Python-style colon from else statement - Resolves exit code 127 in version bump determination 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> * feat: Add Docker build combinations for non-versioning prefixes - Add support for prefix+docker combinations (docs+docker:, chore+docker:, etc.) - Enable Docker build for non-versioning changes when requested - Add repository_dispatch trigger for Docker workflow - Update Docker tagging for PR-based builds (pr-X, main-sha) - Update PR template with new prefix options This allows contributors to force Docker builds for documentation, maintenance, and other non-versioning changes when needed. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> * docs: Add comprehensive PR prefix and automation documentation - Update CONTRIBUTING.md with detailed PR prefix system explanation - Add automation workflow documentation to docs/contributing/workflows.md - Create new user-friendly contributing guide at docs/user-guides/contributing-guide.md - Include Mermaid diagrams for workflow visualization - Document Docker testing combinations and image tagging strategy - Add best practices and common mistakes to avoid This provides clear guidance for contributors on using the automated versioning and Docker build system effectively. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> --------- Co-authored-by: Patryk Ciechanski <patryk.ciechanski@inetum.com> Co-authored-by: Claude <noreply@anthropic.com>
5.5 KiB
Contributing Guide for Users
Quick Start for Contributors
This guide helps new contributors understand how to contribute to the Gemini MCP Server project effectively.
Pull Request Guidelines
Understanding PR Title Automation
The project uses automated workflows based on your PR title. Choose the right prefix to get the appropriate automation:
🚀 For New Features & Bug Fixes (creates releases):
feat: Add new chat streaming functionality
fix: Resolve memory leak in conversation history
breaking: Remove deprecated tool parameters
perf: Optimize token usage calculation
refactor: Simplify error handling logic
What happens: Version bump + GitHub release + Docker image published
📝 For Documentation & Maintenance (no releases):
docs: Update installation instructions
chore: Update dependencies
test: Add integration tests for analyze tool
ci: Improve workflow error handling
style: Fix code formatting issues
What happens: Changes merged, no automation triggered
🐳 For Testing Docker Changes (Docker without releases):
docker: Test new Dockerfile optimization
docs+docker: Update Docker guide and test image
chore+docker: Update base image and test
test+docker: Add Docker integration tests
ci+docker: Update Docker workflow and test
style+docker: Fix Dockerfile formatting and test
What happens: Docker image built and published (tagged with PR number)
Choosing the Right Prefix
Ask yourself:
- Does this add/change functionality? → Use
feat:orfix: - Is this breaking existing behavior? → Use
breaking: - Is this just documentation/maintenance? → Use
docs:,chore:, etc. - Do I need to test Docker changes? → Add
+dockerto any non-version prefix
Examples by Change Type
Adding a New Tool
feat: Add sentiment analysis tool for code comments
Fixing a Bug
fix: Correct timeout handling in thinkdeep tool
Updating Documentation
docs: Add troubleshooting guide for Windows installation
Testing Docker Changes
docs+docker: Update Docker configuration and test deployment
Major Breaking Changes
breaking: Change MCP protocol response format for better compatibility
Docker Testing for Contributors
When to Use Docker Build Combinations
Use +docker suffix when:
- You've modified Dockerfile, docker-compose.yml, or Docker-related configs
- You want to test the containerized version of your changes
- You're updating Docker documentation and want to verify it works
- You're making CI/CD changes that affect Docker builds
Don't use +docker when:
- Your changes don't affect containerization
- You're only updating code documentation
- You're making simple code style changes
How Docker Testing Works
- PR Creation: Docker build test runs automatically (no publishing)
- PR Merge with
+docker: Docker image built and pushed to GHCR - Image Tags: Your image will be tagged as:
pr-{number}(e.g.,pr-42)main-{commit-sha}(e.g.,main-abc1234)
Testing Your Docker Image
After your PR is merged with a +docker prefix:
# Pull your test image
docker pull ghcr.io/patrykiti/gemini-mcp-server:pr-42
# Or use the commit-based tag
docker pull ghcr.io/patrykiti/gemini-mcp-server:main-abc1234
# Test it locally
docker run -it --rm ghcr.io/patrykiti/gemini-mcp-server:pr-42
Workflow Summary
flowchart LR
A[Choose PR Title] --> B{Type of Change?}
B -->|New Feature/Bug Fix| C[feat:/fix: prefix]
B -->|Documentation Only| D[docs: prefix]
B -->|Need Docker Test| E[prefix+docker:]
C --> F[Version Bump + Release + Docker]
D --> G[Merge Only]
E --> H[Docker Build Only]
F --> I[Published Release]
G --> J[Updated Docs]
H --> K[Test Docker Image]
Best Practices
Writing Good PR Titles
- Be specific:
feat: Add rate limiting to chat toolnotfeat: Update chat - Use imperative mood:
fix: Resolve timeout issuenotfixes timeout issue - Keep it concise: Aim for 50 characters or less
- Include scope when helpful:
feat(precommit): Add Python syntax validation
Common Mistakes to Avoid
- ❌
Update README→ ✅docs: Update installation requirements - ❌
Fix bug→ ✅fix: Resolve memory leak in conversation threading - ❌
feat: Add feature→ ✅feat: Add multi-language support for code analysis - ❌
docs: Update Docker and test it→ ✅docs+docker: Update container setup guide
Testing Your Changes
Before submitting a PR:
-
Run local tests:
python -m pytest tests/ --ignore=tests/test_live_integration.py -v black --check . ruff check . -
Test Docker locally (if applicable):
docker build -t test-image . docker run -it --rm test-image -
Verify documentation builds:
- Check that any new documentation renders correctly
- Ensure links work and examples are accurate
Getting Help
- Stuck on prefix choice? Look at recent merged PRs for examples
- Docker build failing? Check the docker-test workflow results in your PR
- Questions about automation? Open a discussion or ask in your PR comments
- Need API access for testing? Live integration tests are optional for contributors
Remember: The automation is designed to help maintain consistency and quality. When in doubt, choose the most conservative prefix and ask for guidance in your PR!