1.0.1 • Published 2 years ago

semantic-release-export-data v1.0.1

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

semantic-release-export-data

semantic-release plugin to export variables like the next release version. Also works in --dry-run mode.

npm downloads ci semantic-release

StepDescription
verifyConditionsSet new-release-published as false (will be set later as true if a new release is published)
generateNotesIf 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:

OutputDescription
new-release-publishedWhether a new release was published. The return value is in the form of a string. (true or false)
new-release-versionIf 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 }}

  build:
    runs-on: ubuntu-latest
    needs: 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 }}"

  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.