Skip to content
This repository was archived by the owner on Feb 2, 2026. It is now read-only.
This repository was archived by the owner on Feb 2, 2026. It is now read-only.

Rethink Release process #2

Description

@ccremer

Context

Currently, the repo is configured as a Monorepo with tools that are tailored for monorepos:

  • Lerna, for managing package dependencies and build order
  • auto, for releasing packages based on PR labels

auto uses Lerna to discover which packages to release, however, it turns out that auto releases unrelated package versions.
For example, if Package B depends on package A and a PR makes changes only to package B, then both package A and B get a new version as defined via PR label, even though package A hasn't received any changes.

We could consider an alternative release tool stack.
In the past I've made great experience with https://github.com/mikepenz/release-changelog-builder-action/, which also categorizes PRs into categories identified by PR labels. However, we'd need additional logic to figure out:

  • what is the "highest ranking" category that PRs were labelled with for a certain package since last release
  • Release only the affected packages that received release-triggering labels
  • Bump the version and commit to main branch

Out of Scope

  • conventional commits (we'll stick with PR-label-based workflows)

Further links

No response

Acceptance Criteria

Given a PR with label `minor`
And the PR contains changes made for package A
And package B depends on package A
When the PR is merged
Then package A is released with a new minor version number
And package B stays on the current version number
Given a PR with label `minor`
And the PR contains changes made for package B
And package B depends on package A
When the PR is merged
Then package B is released with a new minor version number
And package A stays on the current version number
Given a PR with label `canary`
And the PR contains changes made for package A
And package B depends on package A
When the PR receives new pushes
Then package A is released with a canary version number

Implementation Ideas

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    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