To enhance the efficiency of our development workflow and ensure consistency in release management, we aim to introduce automated versioning and publishing within our monorepo. Currently, our monorepo setup with Lerna lacks optimal support for multi-workspace projects. By integrating commit linting for conventional commits, testing alternative tools like Turborepo and Nx, and setting up automated pipelines, we can streamline our CI/CD process, reduce manual errors, and accelerate the delivery of updates.
TODO
[ ] Integrate commit lint with conventional commit guidelines to enforce consistent commit messages.
[ ] Set up Husky to utilize git hooks for enforcing commit lint checks before commits are made.
[ ] Evaluate and test the effectiveness of Turborepo and Nx for managing multi-workspace monorepo structures.
[ ] Develop GitHub Actions pipelines for automated versioning and publishing for all packages within the packages directory.
[ ] Create automated deployment pipelines for applications within the playground directory.
[ ] Implement logic within the CI/CD pipeline to determine which packages require version updates, publishing, and which sample applications need redeployment based on changes.
Acceptance Criteria
Commit messages comply with conventional commit standards and changelogs are generated accordingly.
A successful test run of Turborepo and Nx demonstrates improved management of multi-workspace compared to Lerna.
GitHub Actions pipelines successfully automate the versioning and publishing process for all relevant packages without manual intervention.
The deployment of sample applications from the playground directory is automated and functions correctly post-update.
The CI/CD pipeline intelligently identifies affected packages and applications, handling versioning, publishing, and deployment automatically based on the latest commits.
Implementation Idea
Configure commitlint with a shared configuration that enforces the conventional commit format, and integrate it with Husky's pre-commit hook to validate commit messages.
Run comparative tests between Lerna, Turborepo, and Nx on a branch or fork of the monorepo to determine the best tooling for our use case.
Set up GitHub Actions workflows that are triggered on merge into the main branch, which handle version bumping using tools like semantic-release and publish to package registries.
Design GitHub Actions workflows that trigger deployments for updated applications in the playground directory, perhaps using a strategy that detects changed paths.
Develop a script or use existing tools that can analyze git diffs to determine package changes and trigger the appropriate pipeline tasks for those changes.
Why
To enhance the efficiency of our development workflow and ensure consistency in release management, we aim to introduce automated versioning and publishing within our monorepo. Currently, our monorepo setup with Lerna lacks optimal support for multi-workspace projects. By integrating commit linting for conventional commits, testing alternative tools like Turborepo and Nx, and setting up automated pipelines, we can streamline our CI/CD process, reduce manual errors, and accelerate the delivery of updates.
TODO
packages
directory.playground
directory.Acceptance Criteria
playground
directory is automated and functions correctly post-update.Implementation Idea
commitlint
with a shared configuration that enforces the conventional commit format, and integrate it with Husky's pre-commit hook to validate commit messages.semantic-release
and publish to package registries.playground
directory, perhaps using a strategy that detects changed paths.