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>
107 lines
2.8 KiB
Markdown
107 lines
2.8 KiB
Markdown
# 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](https://github.com/cbcoutinho/astrolabe).
|
|
|
|
### Commit Message Format
|
|
|
|
Use conventional commits with **scopes** to target specific components:
|
|
|
|
```bash
|
|
# 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:
|
|
```bash
|
|
feat: add new feature # → MCP server (v0.54.0)
|
|
```
|
|
|
|
### Release Workflow
|
|
|
|
#### 1. Make Changes with Scoped Commits
|
|
|
|
```bash
|
|
git commit -m "feat(helm): add ingress annotations"
|
|
git commit -m "feat(mcp): add calendar sync"
|
|
```
|
|
|
|
#### 2. Bump Component Versions
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
git push --follow-tags
|
|
```
|
|
|
|
### Changelog Filtering
|
|
|
|
Each component maintains its own `CHANGELOG.md`:
|
|
|
|
- **MCP Server**: `CHANGELOG.md` (root) - includes `feat(mcp):` and unscoped commits
|
|
- **Helm Chart**: `charts/nextcloud-mcp-server/CHANGELOG.md` - includes `feat(helm):` only
|
|
|
|
### Manual Version Bumps
|
|
|
|
For specific increments:
|
|
|
|
```bash
|
|
# 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 by `feat(helm):`)
|
|
- Example: `0.53.0` → `0.54.0` when adding resource limits
|
|
|
|
- **`appVersion`**: MCP server version being deployed (bumped by `feat(mcp):`)
|
|
- Example: `"0.53.0"` → `"0.54.0"` when MCP server releases
|
|
|
|
This allows the chart to evolve independently from the application.
|