Skip to content

FIO-7507: Publish dev tag to npm #13

FIO-7507: Publish dev tag to npm

FIO-7507: Publish dev tag to npm #13

Workflow file for this run

name: Build, Publish
on:
pull_request:
types: [opened, synchronize]
env:
NODE_VERSION: 20.x
jobs:
#####################################################################
## Setup
#####################################################################
setup:
runs-on: ubuntu-latest
steps:
- run: echo "Triggered by ${{ github.event_name }} event."
- name: Check out repository code ${{ github.repository }} on ${{ github.ref }}
uses: actions/checkout@v3
- name: Set up Node.js ${{ env.NODE_VERSION }}
uses: actions/setup-node@v3
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'
- name: Cache node modules
uses: actions/cache@v3
with:
path: node_modules
key: ${{ runner.os }}-node-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-node-
- name: Installing dependencies
if: steps.cache.outputs.cache-hit != 'true'
uses: borales/actions-yarn@v4
with:
cmd: install --frozen-lockfile
# - name: Lint
# uses: borales/actions-yarn@v4
# with:
# cmd: lint
#####################################################################
## Build
#####################################################################
build:
needs: setup
runs-on: ubuntu-latest
steps:
- name: Check out repository code ${{ github.repository }} on ${{ github.ref }}
uses: actions/checkout@v3
- name: Restore node modules from cache
uses: actions/cache@v3
with:
path: node_modules
key: ${{ runner.os }}-node-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-node-
- name: Build
uses: borales/actions-yarn@v4
with:
cmd: build:prod
- name: Show build directory contents
run: |
ls -R ./dist/angular-formio
- name: Cache build directory
uses: actions/cache@v3
with:
path: dist
key: ${{ runner.os }}-dist-${{ hashFiles('dist.tgz') }}
restore-keys: |
${{ runner.os }}-dist-
#####################################################################
## Test (Trys to launch a chrome browser, will need additional work)
#####################################################################
# test:
# needs: setup
# runs-on: ubuntu-latest
# steps:
# - name: Check out repository code ${{ github.repository }} on ${{ github.ref }}
# uses: actions/checkout@v3
# - name: Restore node modules from cache
# uses: actions/cache@v3
# with:
# path: node_modules
# key: ${{ runner.os }}-node-${{ hashFiles('**/yarn.lock') }}
# restore-keys: |
# ${{ runner.os }}-node-
# - name: Test
# uses: borales/actions-yarn@v4
# with:
# cmd: test
#####################################################################
## Publish
#####################################################################
publish:
needs: [setup, build]
if: ${{ github.event_name == 'pull_request' && (github.event.action == 'opened' || github.event.action == 'synchronize') }}
runs-on: ubuntu-latest
steps:
- name: Check out repository code ${{ github.repository }} on ${{ github.ref }}
uses: actions/checkout@v3
- name: Set up Node.js ${{ env.NODE_VERSION }}
uses: actions/setup-node@v3
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'
registry-url: 'https://registry.npmjs.org/'
- name: Prepare version for publish
id: prep
run: |
# Extract the pull request number and the short SHA of the commit
PR_NUMBER=$(echo ${{ github.event.number }})
COMMIT_SHORT_SHA=$(echo "${{ github.event.pull_request.head.sha }}" | cut -c1-7)
# Extract the current version from package.json
CURRENT_VERSION=$(node -p "require('./package.json').version")
# Get base SemVer to us for new dev version
BASE_VERSION=$(echo "$CURRENT_VERSION" | cut -d'-' -f1)
# Construct the new version string
NEW_VERSION="${BASE_VERSION}-dev.${PR_NUMBER}.${COMMIT_SHORT_SHA}"
# Output the new version for use in subsequent GitHub Actions steps
echo "NEW_VERSION=$NEW_VERSION" >> $GITHUB_ENV
- name: Echo version to Publish
run: |
echo "Version to publish: $NEW_VERSION"
# Restore Build cache
- name: Restore build cache
uses: actions/cache@v3
with:
path: dist
key: ${{ runner.os }}-dist-${{ hashFiles('dist.tgz') }}
restore-keys: |
${{ runner.os }}-dist-
- name: Switch to dist directory
run: |
cd ./dist/angular-formio
ls -R .
- name: Configure Git user
run: |
git config --global user.email "pkgbot@form.io"
git config --global user.name "pkgbot"
- name: Add npm token to .npmrc
run: |
echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" > .npmrc
- name: Publish to npm
run: |
pwd
ls -R .
npm version $NEW_VERSION --no-git-tag-version
npm publish ./dist/angular-formio --tag=dev