Skip to content

1.0.30

1.0.30 #47

Workflow file for this run

# This workflow will run tests using node and then publish a package to GitHub Packages when a release is created
# For more information see: https://docs.github.com/en/actions/publishing-packages/publishing-nodejs-packages
name: Publish NPM Package
on:
push:
#On versioned releases
tags:
- v*.*.*
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
inputs:
force:
type: choice
description: Retry Publish Version
options:
- No
- Yes
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node: [ '20' ]
name: Lint, Test, Build and Deploy on Node ${{ matrix.node }}
steps:
- uses: actions/checkout@v4.1.2
- name: Cache node modules
id: cache-npm
uses: actions/cache@v3
env:
cache-name: cache-node-modules
with:
# npm cache files are stored in `~/.npm` on Linux/macOS
path: ~/.npm
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-build-${{ env.cache-name }}-
${{ runner.os }}-build-
${{ runner.os }}-
- if: ${{ steps.cache-npm.outputs.cache-hit != 'true' }}
name: List the state of node modules
continue-on-error: true
run: npm list
- name: Use Node.js
uses: actions/setup-node@v4.0.2
with:
node-version: ${{ matrix.node }}
cache: 'npm'
#always-auth: 'true'
#registry-url: 'https://nexus.tools.services.qld.gov.au/nexus/repository/npm_all/'
registry-url: 'https://registry.npmjs.org'
- name: Install #run on lint step (Which is cached)
run: | # Install packages per package-lock.json only
npm ci
- name: Lint
run: |
npm run lint
- name: Test
run: |
npm run test
- name: Build 🔧
run: | # build the files
npm run build
# - name: Build storybook 🔧
# run: | # build the Storybook files
# npm run build-storybook
publish-npm:
needs: build
env:
HAVE_DEPLOY_KEY: ${{ secrets.npm_token != '' }}
#When run on push tags, force is '', default for workflow_dispatch is No so you can't trigger without a double action
WORKFLOW_DEPLOYMENT: ${{ github.event_name != 'workflow_dispatch' || github.event.inputs.force == 'Yes' }}
DO_DEPLOYMENT: ${{ secrets.npm_token != '' && ( github.event_name != 'workflow_dispatch' || github.event.inputs.force == 'Yes' ) }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Cache node modules
id: cache-npm
uses: actions/cache@v4
env:
cache-name: cache-node-modules
with:
# npm cache files are stored in `~/.npm` on Linux/macOS
path: ~/.npm
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-build-${{ env.cache-name }}-
${{ runner.os }}-build-
${{ runner.os }}-
- if: ${{ steps.cache-npm.outputs.cache-hit != 'true' }}
name: List the state of node modules
continue-on-error: true
run: npm list
- uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm'
- run: npm ci
- name: Build 🔧
run: | # build the files
npm run build
# - name: "Update package scope, export package name"
# id: package_details
# run: |
# echo "replacing npm scope to repo owner GITHUB_REPOSITORY_OWNER = $GITHUB_REPOSITORY_OWNER"
# temp_file=$(mktemp)
# package=${GITHUB_REPOSITORY_OWNER,,}
# awk -v scope="$package" '{
# if ($0 ~ /"name": "@[a-zA-Z0-9_-]+\//) {
# sub(/@[a-zA-Z0-9_-]+\//, "@" scope "/")
# }
# print
# }' package.json > "$temp_file" && mv "$temp_file" package.json
# echo "package.json updated"
# cat package.json
# echo "package=`npm pkg get name`" >> $GITHUB_STATE
#
# - uses: tobysmith568/npm-publish-latest-tag@v1
# id: latest_tag
# with:
# package-json: ./package.json
#
- name: Publish
if: ${{ env.DO_DEPLOYMENT == 'true' }}
run: |
npm publish
env:
NODE_AUTH_TOKEN: ${{secrets.npm_token}}
- name: NPM Publish - Is Skipped
if: ${{ env.HAVE_DEPLOY_KEY != 'true' }}
run: |
echo "### Deployment config not configured" >> $GITHUB_STEP_SUMMARY
echo "secrets.npm_token not existing, npm publish can't be pushed" >> $GITHUB_STEP_SUMMARY
echo "If this is a fork, please setup your own personal service account to publish to your own npmjs.org prefix" >> $GITHUB_STEP_SUMMARY
echo "## We recommend using a service account with the least permissions necessary." >> $GITHUB_STEP_SUMMARY
echo "[npm Access Tokens](https://www.npmjs.com/settings/duttonw/tokens)" >> $GITHUB_STEP_SUMMARY
- name: Publish - Skipped
if: ${{ env.DO_DEPLOYMENT != 'true' }}
run: |
echo "### Publish skipped" >> $GITHUB_STEP_SUMMARY
echo "DO_DEPLOYMENT: github.event_name: ${{ github.event_name != 'workflow_dispatch'}} || github.event.inputs.force: ${{ github.event.inputs.force == 'Yes' }}" >> $GITHUB_STEP_SUMMARY