Skip to content

Publish to npm and GitHub Release #6

Publish to npm and GitHub Release

Publish to npm and GitHub Release #6

Workflow file for this run

name: Publish to npm and GitHub Release
on:
workflow_dispatch:
inputs:
release_type:
description: 'Release type (patch, minor, major)'
required: true
default: 'patch'
type: choice
options:
- patch
- minor
- major
jobs:
publish:
runs-on: ubuntu-latest
permissions:
contents: write
id-token: write
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
registry-url: 'https://registry.npmjs.org'
- name: Configure Git
run: |
git config --global user.name 'github-actions[bot]'
git config --global user.email 'github-actions[bot]@users.noreply.github.com'
- name: Bump version
run: "npm version ${{ github.event.inputs.release_type }} -m 'chore: release v%s'"
- name: Install dependencies
run: npm install
- name: Commit lockfile if changed
run: |
git add package-lock.json || true
git diff --cached --quiet || git commit -m 'chore: update package-lock.json'
- name: Push changes and tags
run: |
git pull --rebase origin main
git push --follow-tags
- name: Publish to npm
run: npm publish --access public
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
- name: Get Version
id: get_version
run: |
VERSION=$(node -e "console.log(JSON.parse(require('fs').readFileSync('./package.json', 'utf8')).version)")
echo "VERSION=$VERSION" >> $GITHUB_OUTPUT
- name: Create GitHub Release
uses: softprops/action-gh-release@v1
with:
generate_release_notes: true
tag_name: v${{ steps.get_version.outputs.VERSION }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}