Skip to content

[Feature]: Add dedicated Monorepo support to Uplift #307

@ga-paul-t

Description

@ga-paul-t

Describe your feature

As it stands, Uplift is designed to provide a release management strategy for standalone projects (repositories). And no easy way exists for managing other types of projects, such as monorepos. As the release strategy for a monorepo introduces additional complexity, an explicit operation should be introduced to Uplift to handle this.

Uplift needs to support running within the context of a sub-directory of a project and adopt both a tagging and changelog strategy that reflects this.

Your potential solution

Add a dedicated config (flags TBD) to switch Uplift into monorepo mode.

While in this mode:

  • A dedicated tag will label this a monorepo (component) release. This scheme should be flexible and support the proposed Go templating strategy
  • This tag will need additional processing to calculate the next semantic version. This tag will need to be handled correctly when generating a changelog and bumping files
  • When retrieving the git log the git command needs to be augmented to specify the monorepo directory. This will need to be reflected in both the semantic version and changelog tasks. This could be extended to grab the log from multiple directories if need be

For this initial work, an assumption will be made that each monorepo will contain its own .uplift.yml file

Any additional information?

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct

Metadata

Metadata

Assignees

Labels

enhancementNew feature or requestpinnedPrevent the issue from being automatically closed

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions