Versioning releases from a monorepo
Blog post from Aspect Build
Transitioning to a monorepo involves relinquishing individual control over development processes in exchange for a centralized, consistent experience, allowing teams to focus more on product development rather than infrastructure issues. A key aspect of this transition is managing how versions are applied to artifacts released from a monorepo. Traditional project-specific versioning, such as Semantic Versioning, can lead to challenges like dependency issues and performance penalties due to numerous tags. Trunk-based development offers a solution by aligning dependencies at the latest commit, allowing for a single version across the entire monorepo, known as monoversioning. This can be implemented either automatically, assigning a version for every commit with a format that resembles Semantic Versioning, or manually, tagging releases to align with Semantic Versioning expectations. The automated approach helps maintain performance and simplifies release reasoning, though it does not indicate breaking changes, while the manual approach requires coordinated tagging to adhere to versioning standards.