🏷️ Publish NPM (version prompt) #4
Workflow file for this run
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
name: 🏷️ Publish NPM (version prompt) | |
on: | |
workflow_dispatch: | |
inputs: | |
version: | |
description: 'Fixed Version' | |
required: true | |
type: string | |
tag: | |
type: choice | |
description: Tag | |
options: | |
- latest | |
- beta | |
permissions: | |
contents: write | |
id-token: write | |
jobs: | |
deploy-npm-prompt: | |
runs-on: ubuntu-latest | |
timeout-minutes: 30 | |
steps: | |
- name: Retrieve current Date Time in EST | |
shell: bash | |
run: echo "START_TIME=$(TZ=":America/New_York" date -R|sed 's/.....$//')" >> $GITHUB_ENV | |
- name: Current datetime - ${{ env.START_TIME }} | |
run: echo ${{ env.START_TIME }} | |
- name: Clone repository | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
token: ${{ secrets.GITHUB_TOKEN }} | |
- if: ${{ github.event.pull_request.merged != true && contains('["ghiscoding"]', github.actor) != true }} | |
name: Exit early when current actor is not allowed to push new release | |
run: | | |
echo "Error: Your GitHub username (${{ github.actor }}) is not on the allowed list of admins for this workflow" | |
exit 1 | |
- name: Set NodeJS | |
uses: actions/setup-node@v4 | |
with: | |
registry-url: 'https://registry.npmjs.org/' | |
node-version: 20 | |
- name: Install pnpm | |
uses: pnpm/action-setup@v3 | |
with: | |
version: 8 | |
run_install: false | |
- name: Get pnpm store directory | |
run: echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV | |
- name: Setup pnpm cache | |
uses: actions/cache@v4 | |
with: | |
path: ${{ env.STORE_PATH }} | |
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} | |
restore-keys: | | |
${{ runner.os }}-pnpm-store- | |
- name: Run pnpm install dependencies | |
run: pnpm install | |
- name: Build Library | |
run: pnpm bundle | |
- name: Archive common build artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: dist-common | |
path: | | |
packages/common/dist | |
retention-days: 5 | |
- name: Lerna Version (latest) 🏷️ | |
if: ${{ contains(inputs.tag, 'latest') }} | |
env: | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} | |
run: | | |
git config --global user.name "${{ github.actor }}" | |
git config --global user.email "${{ github.actor }}@users.noreply.github.com" | |
pnpm whoami | |
pnpm exec lerna version ${{ inputs.version }} --yes | |
- name: Lerna Version (beta) 🏷️ | |
if: ${{ contains(inputs.tag, 'beta') }} | |
env: | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} | |
NPM_CONFIG_PROVENANCE: true | |
HUSKY: 0 | |
run: | | |
git config --global user.name "${{ github.actor }}" | |
git config --global user.email "${{ github.actor }}@users.noreply.github.com" | |
pnpm whoami | |
pnpm exec lerna version prerelease --conventional-commits --conventional-prerelease --preid beta --force-publish --yes | |
- name: OTP | |
uses: step-security/wait-for-secrets@v1 | |
id: wait-for-secrets | |
with: | |
secrets: | | |
OTP: | |
name: 'OTP to publish package' | |
description: 'OTP from authenticator app' | |
- name: Lerna Publish 📦 | |
env: | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} | |
NPM_CONFIG_PROVENANCE: true | |
HUSKY: 0 | |
run: | | |
pnpm exec lerna publish from-package --force-publish --yes --otp ${{ steps.wait-for-secrets.outputs.OTP }} | |
- name: Website Dev Build | |
run: pnpm build:dev | |
- name: Deploy to gh-pages | |
if: github.ref == 'refs/heads/master' | |
uses: peaceiris/actions-gh-pages@v4 | |
with: | |
github_token: ${{ secrets.GITHUB_TOKEN }} | |
publish_dir: ./website |