From e208a71e156e864cec42f0fc30ea8c32dd687116 Mon Sep 17 00:00:00 2001 From: Abdelrahman Abounegm Date: Mon, 29 Jul 2024 15:35:25 +0300 Subject: [PATCH] Add workflow to deploy to NPM on release --- .github/workflows/release.yml | 51 +++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 000000000..90758e66f --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,51 @@ +name: Release to npm + +on: + release: + types: ["published"] + workflow_dispatch: + +jobs: + release: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-node@v4 + with: + node-version: "20.x" + registry-url: "https://registry.npmjs.org" + cache: "yarn" + + - run: yarn install + + - run: yarn build + + - uses: actions/github-script@v7 + name: Extract tag + id: extract-tag + with: + result-encoding: string + script: | + const {version} = require('${{ github.workspace }}/package.json'); + const semver = require('semver'); + + const DEFAULT_TAG = 'latest'; + const parsedVersion = semver.parse(version); + + if (parsedVersion == null) { + return DEFAULT_TAG; + } + + const {prerelease} = parsedVersion; + + if (prerelease.length === 0) { + return DEFAULT_TAG; + } + + const tag = prerelease[0]; + return typeof tag === 'string' ? tag : DEFAULT_TAG; + + - run: npm publish --access public --tag "${{ steps.extract-tag.outputs.result }}" + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}