Release #72
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# This workflow will do a clean installation of node dependencies, cache/restore them, build the source code and run tests across different versions of node | |
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-nodejs | |
name: Release | |
on: | |
workflow_dispatch: | |
inputs: | |
dry-run: | |
description: Dry run | |
required: false | |
default: false | |
type: boolean | |
increment: | |
description: Increment version | |
required: true | |
default: patch | |
type: choice | |
options: | |
- patch | |
- minor | |
- major | |
permissions: | |
contents: write | |
env: | |
INPUTS_DRY_RUN: ${{ github.event.inputs.dry-run }} | |
INPUTS_INCREMENT: ${{ github.event.inputs.increment }} | |
DRY_RUN_OPTION: ${{ github.event.inputs.dry-run == 'true' && '--dry-run' || '' }} | |
jobs: | |
publish-npm: | |
runs-on: ubuntu-latest | |
environment: npm | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 22 | |
registry-url: https://registry.npmjs.org/ | |
- name: Run Unit Tests | |
if: ${{ github.event.inputs.dry-run == 'false' }} | |
run: | | |
npm ci | |
npm run test | |
## - name: Run Integration Tests | |
## run: | | |
## npm install | |
## npm run test:integration | |
# requires npm which we get from setup-node | |
- name: Increment version | |
id: increment-version | |
run: | | |
npm version $INPUTS_INCREMENT --no-git-tag-version | |
echo "new-version=$(npm pkg get version | tr -d '"')" >> $GITHUB_OUTPUT | |
# replace placeholder with current values in CHANGELOG.md | |
# -E extended mode for \s support, -i inplace | |
# 0,: only operate on the first match. | |
- name: Replace TBD entry in CHANGELOG.md | |
env: | |
NEW_VERSION: ${{ steps.get-version.outputs.new-version }} | |
run: | | |
CURRENT_DATE=$(date +%Y-%m-%d) | |
sed -i -E "0,/^##\s+\[Unreleased\].*$/s//## [${NEW_VERSION}] - ${CURRENT_DATE}/" CHANGELOG.md | |
- name: Publish to npm | |
run: npm publish --access public $DRY_RUN_OPTION | |
env: | |
NODE_AUTH_TOKEN: ${{secrets.npm_token}} | |
- name: Parse changelog | |
id: parse-changelog | |
uses: schwma/[email protected] | |
with: | |
version: '${{ steps.increment-version.outputs.new-version }}' | |
- name: Create a GitHub release | |
if: ${{ github.event.inputs.dry-run == 'false' }} | |
uses: ncipollo/release-action@v1 | |
with: | |
tag: 'v${{ steps.increment-version.outputs.new-version }}' | |
body: '${{ steps.parse-changelog.outputs.body }}' | |
# add missing template to change log for new development | |
# -E extended mode for \s support, -i inplace | |
# 0,: only operate on the first match. | |
# & is the matched string | |
- name: Add version template to CHANGELOG.md | |
run: | | |
sed -i -E '0,/^##\s+.*$/s//## [Unreleased]\ | |
\ | |
### Added\ | |
### Changed\ | |
### Deprecated\ | |
### Removed\ | |
### Fixed\ | |
### Security\ | |
\ | |
&/' CHANGELOG.md | |
# prepare branch | |
- name: Commit changes | |
env: | |
NEW_VERSION: ${{ steps.increment-version.outputs.new-version }} | |
run: | | |
git config --global user.name "${GITHUB_ACTOR}" | |
git config --global user.email "[email protected]" | |
git add -u . | |
git commit -m "chore(version): $INPUTS_INCREMENT version $NEW_VERSION" | |
git push origin $BRANCH $DRY_RUN_OPTION |