- scripts/release.sh: one-command local release (bump, changelog, tag, push) - .github/workflows/release.yml: fix SHA256 auto-commit back to master, dynamic mcp-publisher version detection, cargo cache, security hardening - .claude/commands/release.md: /release slash command - .windsurf/workflows/release.md: streamlined to use release.sh Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
114 lines
2.4 KiB
Markdown
114 lines
2.4 KiB
Markdown
---
|
|
description: Release workflow — bump version, build, tag, push, publish MCP
|
|
tags: [release, publish, workflow]
|
|
---
|
|
|
|
# MT5-Quant Release Workflow
|
|
|
|
One-command release: `bash scripts/release.sh [patch|minor|major|X.Y.Z]`
|
|
|
|
---
|
|
|
|
## 0. Pre-release checklist
|
|
|
|
- [ ] Features implemented and tested
|
|
- [ ] Docs updated (README.md, docs/MCP_TOOLS.md) with correct tool count
|
|
- [ ] `cargo check` passes
|
|
|
|
Check tool count:
|
|
|
|
// turbo
|
|
```bash
|
|
grep -r "pub fn tool_" src/tools/definitions/ | wc -l
|
|
```
|
|
|
|
---
|
|
|
|
## 1. Run the release script
|
|
|
|
// turbo
|
|
```bash
|
|
bash scripts/release.sh patch
|
|
```
|
|
|
|
Accepts: `patch` · `minor` · `major` · `1.32.0` · `v1.32.0`
|
|
|
|
The script handles:
|
|
- Version bump in `Cargo.toml`
|
|
- `server.json` version + download URL update
|
|
- `CHANGELOG.md` entry generation from git log
|
|
- `cargo check` verification
|
|
- Release commit + annotated git tag
|
|
- `git push` → triggers GitHub Actions
|
|
|
|
---
|
|
|
|
## 2. Monitor CI
|
|
|
|
// turbo
|
|
```bash
|
|
gh run list --limit 3
|
|
```
|
|
|
|
CI pipeline stages:
|
|
1. **build-macos** / **build-linux** — parallel Rust builds with cache
|
|
2. **release** — creates GitHub Release with both binaries
|
|
3. **build-mcp-package** — packages binary + config + docs, computes SHA256
|
|
4. **update-server-json** — commits real SHA256 back to `server.json` on master
|
|
5. **mcp-publish** — publishes to MCP Registry via GitHub OIDC
|
|
6. **release-info** — prints registration commands for all MCP clients
|
|
|
|
---
|
|
|
|
## 3. Install locally
|
|
|
|
// turbo
|
|
```bash
|
|
cp target/release/mt5-quant ~/.local/bin/mt5-quant
|
|
```
|
|
|
|
---
|
|
|
|
## 4. Verify
|
|
|
|
// turbo
|
|
```bash
|
|
claude mcp list
|
|
```
|
|
|
|
---
|
|
|
|
## Manual MCP publish (if CI publish fails)
|
|
|
|
// turbo
|
|
```bash
|
|
# Get latest mcp-publisher
|
|
LATEST=$(curl -sf https://api.github.com/repos/modelcontextprotocol/registry/releases/latest | python3 -c "import sys,json; print(json.load(sys.stdin)['tag_name'])")
|
|
VERSION="${LATEST#v}"
|
|
curl -fsSL -o pub.tar.gz "https://github.com/modelcontextprotocol/registry/releases/download/${LATEST}/mcp-publisher_${VERSION}_$(uname -s | tr '[:upper:]' '[:lower:]')_amd64.tar.gz"
|
|
tar -xzf pub.tar.gz && chmod +x mcp-publisher
|
|
./mcp-publisher login github
|
|
./mcp-publisher publish
|
|
```
|
|
|
|
---
|
|
|
|
## Re-trigger CI without a new tag
|
|
|
|
// turbo
|
|
```bash
|
|
gh workflow run release.yml -f version=v1.32.0
|
|
```
|
|
|
|
---
|
|
|
|
## Rollback
|
|
|
|
```bash
|
|
# Remove tag locally and remotely
|
|
git tag -d v1.32.0
|
|
git push origin :refs/tags/v1.32.0
|
|
# Delete GitHub Release
|
|
gh release delete v1.32.0 --yes
|
|
```
|