dfc75a8619
Astrolabe has been extracted to its own repository at github.com/cbcoutinho/astrolabe for independent releases. Changes: - Replace third_party/astrolabe/ directory with git submodule - Remove astrolabe-ci.yml and appstore-build-publish.yml workflows - Remove scripts/bump-astrolabe.sh - Remove Astrolabe sections from bump-version.yml workflow - Remove Astrolabe build steps from test.yml CI workflow - Remove astrolabe volume mount from docker-compose.yml - Simplify astrolabe install hook to always use app store - Update CONTRIBUTING.md to reflect two-component monorepo Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2.8 KiB
2.8 KiB
Contributing to Nextcloud MCP Server
Version Management
This monorepo uses commitizen for version management with independent versioning for two components:
Components
| Component | Scope | Bump Command | Tag Example |
|---|---|---|---|
| MCP Server | mcp or none |
./scripts/bump-mcp.sh |
v0.54.0 |
| Helm Chart | helm |
./scripts/bump-helm.sh |
nextcloud-mcp-server-0.54.0 |
Note: The Astrolabe Nextcloud app has been moved to its own repository at cbcoutinho/astrolabe.
Commit Message Format
Use conventional commits with scopes to target specific components:
# MCP server changes
feat(mcp): add calendar sync API
fix(mcp): resolve authentication bug
# Helm chart changes
feat(helm): add resource limits
docs(helm): update values documentation
Unscoped commits default to the MCP server:
feat: add new feature # → MCP server (v0.54.0)
Release Workflow
1. Make Changes with Scoped Commits
git commit -m "feat(helm): add ingress annotations"
git commit -m "feat(mcp): add calendar sync"
2. Bump Component Versions
# Bump MCP server (reads commits with scope=mcp or unscoped)
./scripts/bump-mcp.sh
# → Creates tag: v0.54.0
# → Updates: pyproject.toml, Chart.yaml:appVersion
# Bump Helm chart (reads commits with scope=helm)
./scripts/bump-helm.sh
# → Creates tag: nextcloud-mcp-server-0.54.0
# → Updates: Chart.yaml:version
3. Push Tags
git push --follow-tags
Changelog Filtering
Each component maintains its own CHANGELOG.md:
- MCP Server:
CHANGELOG.md(root) - includesfeat(mcp):and unscoped commits - Helm Chart:
charts/nextcloud-mcp-server/CHANGELOG.md- includesfeat(helm):only
Manual Version Bumps
For specific increments:
# Patch bump (0.53.0 → 0.53.1)
uv run cz bump --increment PATCH
# Minor bump (0.53.0 → 0.54.0)
uv run cz bump --increment MINOR
# Major bump (0.53.0 → 1.0.0)
uv run cz bump --increment MAJOR
# For non-MCP components, use --config
cd charts/nextcloud-mcp-server
uv run cz --config .cz.toml bump --increment MINOR
Versioning Philosophy
- MCP Server: Follows PEP 440,
major_version_zero = true(0.x.x for pre-1.0) - Helm Chart: Follows PEP 440, starts at 0.53.0 (continues from current)
Chart.yaml Version vs appVersion
The Helm chart has TWO version fields:
-
version: Chart packaging version (bumped byfeat(helm):)- Example:
0.53.0→0.54.0when adding resource limits
- Example:
-
appVersion: MCP server version being deployed (bumped byfeat(mcp):)- Example:
"0.53.0"→"0.54.0"when MCP server releases
- Example:
This allows the chart to evolve independently from the application.