Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/exodusmovement/lerna-release-action
Selectively release packages from a lerna monorepo
https://github.com/exodusmovement/lerna-release-action
Last synced: 8 days ago
JSON representation
Selectively release packages from a lerna monorepo
- Host: GitHub
- URL: https://github.com/exodusmovement/lerna-release-action
- Owner: ExodusMovement
- Created: 2023-01-10T05:40:36.000Z (almost 2 years ago)
- Default Branch: master
- Last Pushed: 2024-10-17T15:30:27.000Z (26 days ago)
- Last Synced: 2024-10-30T15:25:14.939Z (13 days ago)
- Language: TypeScript
- Size: 12.3 MB
- Stars: 1
- Watchers: 10
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
README
[![Checks](https://github.com/ExodusMovement/lerna-release-action/actions/workflows/checks.yml/badge.svg)](https://github.com/ExodusMovement/lerna-release-action/actions/workflows/checks.yml)
## ExodusMovement/lerna-release-action
Action that allows selectively releasing packages in a lerna monorepo. It works around lerna's opinionated releasing of every dependant if a package changed. This comes with its own dangers and should be used with caution. The action creates
a release PR that is assigned to the user that dispatched the workflow.### Version workflow
```yaml
name: Version
on:
workflow_dispatch:
inputs:
packages:
description: 'Selected packages as comma separated string, e.g. @exodus/storage-spec,@exodus/formatting or just storage-spec,formatting'
type: string
required: truejobs:
version:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: actions/setup-node@v3
with:
node-version-file: '.nvmrc'
- name: Install dependencies
run: yarn install
- uses: ExodusMovement/lerna-release-action/version@master
name: Version
with:
github-token: ${{ secrets.GH_AUTOMATION_PAT }} # should not be the default GITHUB_TOKEN, otherwise subsequent automation will not run (such as checks on the release PR)
packages: ${{ inputs.packages }}
```#### Enabling auto-merge
The Version action can enable auto-merge on the created pull request. This is possible when the repository allows auto-merge, squash merging is enabled and has branch protection rules set up.
To use it, set the `auto-merge` input of the action to `true`.
```yaml
- uses: ExodusMovement/lerna-release-action/version@master
name: Version
with:
# other inputs here
auto-merge: true
```### Publish workflow
```yaml
name: Publish
on:
pull_request:
types:
- closed
workflow_dispatch:jobs:
publish:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
ref: ${{ github.event.pull_request.head.sha }}
- uses: actions/setup-node@v3
with:
node-version-file: '.nvmrc'
- name: Install dependencies
run: yarn install
- name: Build
run: yarn build
- name: Publish
uses: ExodusMovement/lerna-release-action/publish@master
```### Version dispatch workflow
Automatically start versioning of packages when a PR is merged. Requires using `ExodusMovment/lerna-package-name-action` to label PRs, as these package labels will be used to determine the packages to be versioned.
```yaml
name: Version dispatch
on:
pull_request:
types:
- closedjobs:
invoke-versioning:
if: contains(github.event.pull_request.labels.*.name , 'publish-on-merge') == false && contains(github.event.pull_request.labels.*.name , 'skip-release') == false
name: Invoke version workflow
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ExodusMovement/lerna-release-action/version-dispatch@master
with:
version-workflow-id: version.yaml
github-token: ${{ secrets.GH_AUTOMATION_PAT }}
exclude-commit-types: chore,docs,test,ci
```