boomtick uses automated release pipelines for both the Python CLI and the TypeScript MCP tools.
We use Semantic Versioning (SemVer) for all components.
- CLI: Versions are managed in
cli/pyproject.toml. - MCP: Versions are managed in
mcp/package.json.
Releases are triggered by pushing specific Git tags:
- CLI Release: Push a tag matching
cli-v*(e.g.,cli-v0.2.1). - MCP Release: Push a tag matching
mcp-v*(e.g.,mcp-v0.2.1).
We use Release Drafter and git-cliff to automate our release notes and changelog updates.
It is critical to use Conventional Commits syntax (e.g., fix: ..., feat: ..., refactor: ...) for all commits. release-please strictly relies on this format to parse commits, evaluate changes, and bump versions appropriately. Commits starting with capitalized words (like Refactor, Fix, Continue) without conventional formatting will cause parsing errors, resulting in release-please skipping candidate PR generation for the affected components.
Whenever a Pull Request is merged into main, Release Drafter automatically updates a draft release with the changes.
- It categorizes changes based on PR labels (e.g.,
feature,bug,documentation). - It automatically suggests the next version number.
When a new release is published, a GitHub Action triggers git-cliff to:
- Parse the git history using Conventional Commits.
- Generate a new entry for
CHANGELOG.md. - Prepend the entry to the top of the file and commit it back to the repository.
-
Update Version:
- For CLI: Update
versionincli/pyproject.toml. - For MCP: Run
pnpm --filter @arii/boomtick-mcp version <patch|minor|major>.
- For CLI: Update
-
Commit and Push Changes:
git add . git commit -m "chore: bump version to x.y.z" git push origin main
-
Create and Push Tag:
# For CLI git tag cli-v0.2.1 git push origin cli-v0.2.1 # For MCP git tag mcp-v0.2.1 git push origin mcp-v0.2.1
- Triggers on
cli-v*tags. - Runs CLI unit tests.
- Builds MCP tools and bundles them into the CLI distribution.
- Syncs schemas and contracts.
- Builds the Python package (
sdistandwheel). - Publishes to PyPI.
- Creates a GitHub Release with generated notes and artifacts.
- Triggers on
mcp-v*tags. - Runs MCP unit tests.
- Builds the TypeScript project.
- Publishes to npm (under the
@ariiscope). - Creates a GitHub Release with generated notes.
- Triggers when a release is published.
- Uses
git-cliffto generate release notes from conventional commits. - Prepends new notes to
CHANGELOG.mdand commits the change.
Both workflows can be triggered manually via the GitHub Actions UI for dry-runs or debugging.