UUI Release Workflow
Important
Always ask for explicit user permission before triggering a release. Publishing packages to npm cannot be undone. Never initiate the publish workflow without confirming the user intends to do so.
Before asking for permission, provide a pre-publish summary:
- Version: The version that will be published (from
changelog.mdtop section or Lerna) - Packages: Which packages will be published (from
package.jsonworkspaces) - Summary: Brief highlights of changes from the current
changelog.mdentry
How publishing works
Publishing is done via GitHub Actions using npm Trusted Publishers (OIDC). No npm token or OTP is required.
The release process has two parts:
- Version bump (local) —
yarn releaserunslerna version --force-publishinteractively. Lerna creates a version commit, tag, and pushes both to the release branch. - Publish (GitHub Actions) — the maintainer manually triggers the
Releaseworkflow in GitHub, selects the tag and dist-tag, approves thenpm-publishenvironment gate, and CI publishes all 13 packages.
Prerequisites
- Release branch created from
develop(e.g.release/vX.Y.Z) changelog.mdupdated with all released changes- Builds verified:
yarn build
Stable Release
- On the release branch, run:
yarn release - Lerna prompts for version type — choose patch / minor / major
- Lerna commits the version bump, creates tag
vX.Y.Z, pushes to the release branch - Go to GitHub → Actions → Release → Run workflow
tag: the tag from step 3 (e.g.v6.5.3)dist_tag:latestdry_run:false
- Approve the deployment in the
npm-publishenvironment - After successful publish: post changelog to GitHub Releases and UUI Teams channel
- Open PR from release branch into
main - Sync
mainback intodevelop(see dev-docs/release-workflow.md for steps)
Beta Release
Same steps, with:
- In step 2, enter a prerelease version when prompted (e.g.
6.5.3-beta.0) - In step 4, set
dist_tagtobeta
Dry Run (testing)
Trigger the workflow with dry_run: true (default) and an existing tag to validate the build and publish steps without actually uploading to npm.
Handling Failed Releases
If the release fails after Lerna already created the version commit and tag:
- Revert the version bump commit
- Delete local tag:
git tag -d <tag_name> - Delete remote tag:
git push --delete origin <tag_name> - Fix the issue and run
yarn releaseagain
Release Checklist
- Release branch created from
develop - All changes merged into the release branch
- Changelog updated
- Builds verified (
yarn build) - User permission obtained to publish to npm
-
yarn release— version bump + tag pushed - GitHub Actions workflow triggered with correct tag and dist-tag
-
npm-publishenvironment approved - Workflow completed successfully
- Changelog published to GitHub Releases
- Team notified in Teams channel
- PR from release branch into
mainopened -
mainsynced back intodevelop -
git log origin/develop..origin/mainis empty