Skip to content

Release Cycle

This document describes briefly how the release process is handled for Mosaico project.

Monorepo

Mosaico utilizes a monorepo structure to simplify integration and testing between mosaicod daemon and Python SDK. While these components reside in the same repository, they are decoupled: each component maintains its own release schedule and both follow semantic versioning.

Development workflow

The development workflow relies on a specific set of branches and tags to manage stability and feature development.

  • main: the primary integration branch. All stable features and fixes eventually land here. Official release tags are cut directly from main once sufficient changes have been accumulated.
  • issue/<num>: feature or bug-fix branches linked to a specific GitHub issue. Branched from main and merged back via pull request upon completion.
  • release/[mosaicod|mosaico-py]/vX.Y.<Z+1>: maintenance branches for critical hotfixes. Created from an existing version tag when a patch is required for an older release. The final commit is tagged with the incremented version. Relevant fixes should be cherry-picked or merged back into main if applicable. These branches might be used in the future to support pre-release stages.

Tags

We use specific tag prefixes to trigger CI/CD pipelines and distinguish between stable releases of the daemon and the SDK

Component Tag
Daemon mosaicod/vX.Y.Z
Python SDK mosaico-py/vX.Y.Z