semantic-release-export-data
v1.1.0
Published
semantic-release plugin to export variables like the next release version
Downloads
29,190
Readme
semantic-release-export-data
semantic-release plugin to export variables like the next release version. Also works in --dry-run
mode.
| Step | Description |
| ------------------ | -------------------------------------------------------------------------------------------------- |
| verifyConditions
| Set new-release-published
as false
(will be set later as true
if a new release is published) |
| generateNotes
| If a new release is published, this will set new-release-published
as true
and other variables |
Install
npm install --save-dev semantic-release-export-data
OR
yarn add -D semantic-release-export-data
Usage
The plugin can be configured in the semantic-release configuration file:
{
"plugins": ["semantic-release-export-data"]
}
Outputs
Currently, the plugin exports the following GitHub Actions's outputs:
| Output | Description |
| ----------------------- | ----------------------------------------------------------------------------------------------------- |
| new-release-published
| Whether a new release was published. The return value is in the form of a string. (true
or false
) |
| new-release-version
| If a new release was published, the version of the new release. (e.g. 1.3.0
) |
GitHub Actions Example
name: ci
on:
push:
branches: [master]
jobs:
get-next-version:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 16
- run: npm ci
- run: npx semantic-release --dry-run
id: get-next-version
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
outputs:
new-release-published: ${{ steps.get-next-version.outputs.new-release-published }}
new-release-version: ${{ steps.get-next-version.outputs.new-release-version }}
new-release-git-tag: ${{ steps.get-next-version.outputs.new-release-git-tag }}
build:
runs-on: ubuntu-latest
needs: get-next-version
if: needs.get-next-version.outputs.new-release-published == 'true'
steps:
- uses: actions/checkout@v3
- run: echo "The new release version is ${{ needs.get-next-version.outputs.new-release-version }}"
- run: echo "The new release git tag is ${{ needs.get-next-version.outputs.new-release-git-tag }}"
release:
runs-on: ubuntu-latest
needs: build
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 16
- run: npm ci
- run: npx semantic-release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Why?
Because of https://github.com/felipecrs/semantic-release-vsce/issues/189#issuecomment-1115021771 and https://github.com/semantic-release/semantic-release/issues/1647.
Thanks
Inspired by the awesome semantic-release-action by @cycjimmy, although this provides the ability of running semantic-release
in --dry-run
mode, so you don't have to cut a release unless everything else is done.