Skip to content

Rethink Release process #2

Open
@ccremer

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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions