Skip to content

Latest commit

 

History

History
103 lines (79 loc) · 4.06 KB

README.md

File metadata and controls

103 lines (79 loc) · 4.06 KB

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

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 felipecrs/semantic-release-vsce#189 (comment) and semantic-release/semantic-release#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.