Publish Package to NPM on Release #14
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 Package to NPM on Release | |
on: | |
release: | |
types: | |
- published | |
jobs: | |
bundle: | |
name: Bundle | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Setup Node | |
uses: actions/setup-node@v3 | |
- name: Cache node modules | |
uses: actions/cache@v3 | |
with: | |
path: ~/.npm # npm cache files are stored in `~/.npm` on Linux/macOS | |
key: npm-${{ hashFiles('package-lock.json') }} | |
restore-keys: | | |
npm-${{ hashFiles('package-lock.json') }} | |
npm- | |
- name: Clean Install | |
run: npm ci | |
- name: Bundle | |
run: npm run bundle | |
- name: Store bundle artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: bundles | |
path: bundles | |
retention-days: 1 | |
unit-tests: | |
name: Unit Tests | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Clean Install | |
run: npm ci | |
- name: Unit Test | |
run: npm test | |
e2e-tests: | |
name: E2E Tests | |
needs: [bundle] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Clean Install | |
run: npm ci | |
- name: Download bundled artifact | |
uses: actions/download-artifact@v3 | |
with: | |
name: bundles | |
path: bundles | |
- name: E2E Test | |
run: npm run e2e | |
publish: | |
name: Publish | |
needs: [unit-tests, e2e-tests] | |
runs-on: ubuntu-latest | |
if: ${{ !github.event.release.prerelease && github.event.release.target_commitish == 'main' }} | |
steps: | |
- name: Set Release Version | |
run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/v}" >> $GITHUB_ENV | |
- name: Setup Node | |
uses: actions/setup-node@v3 | |
with: | |
node-version: '14.x' | |
registry-url: 'https://registry.npmjs.org' | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Download bundled artifacts | |
uses: actions/download-artifact@v3 | |
with: | |
name: bundles | |
path: bundles | |
- name: Cache node modules | |
uses: actions/cache@v3 | |
with: | |
path: ~/.npm # npm cache files are stored in `~/.npm` on Linux/macOS | |
key: npm-${{ hashFiles('package-lock.json') }} | |
restore-keys: | | |
npm-${{ hashFiles('package-lock.json') }} | |
npm- | |
- name: Before deploy | |
run: npm ci && npm run declarations | |
- name: Publish npm Package | |
run: | | |
npm version $RELEASE_VERSION --no-git-tag-version | |
npm publish --access public | |
env: | |
NODE_AUTH_TOKEN: ${{ secrets.NPM_AUTH_TOKEN }} | |
publish-beta: | |
name: Publish Beta to NPM | |
needs: [unit-tests, e2e-tests] | |
runs-on: ubuntu-latest | |
if: ${{ github.event.release.prerelease }} | |
steps: | |
- name: Check Branch Name Format | |
run: | | |
re=v[0-9]+\.[0-9]+\.[0-9]+-beta\.[0-9]+ | |
if ! [[ ${{ github.event.release.target_commitish }} =~ $re ]]; then | |
echo "Target branch does not match expected regex pattern for beta releases ($re)." | |
echo "${{ github.event.release.target_commitish }}" | |
echo "Please update your branch name to match the expected regex pattern." | |
exit 1 | |
fi | |
- name: Set Release Version | |
run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/v}" >> $GITHUB_ENV | |
- name: Check Release Version Format | |
run: | | |
re=[0-9]+\.[0-9]+\.[0-9]+-beta\.[0-9]+ | |
if ! [[ $RELEASE_VERSION =~ $re ]]; then | |
echo "Tag does not match expected regex pattern for beta releases (v$re)." | |
echo $RELEASE_VERSION | |
echo "Please update your tag to match the expected regex pattern." | |
exit 1 | |
fi | |
- name: Setup Node | |
uses: actions/setup-node@v3 | |
with: | |
node-version: '14.x' | |
registry-url: 'https://registry.npmjs.org' | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Download bundled artifacts | |
uses: actions/download-artifact@v3 | |
with: | |
name: bundles | |
path: bundles | |
- name: Cache node modules | |
uses: actions/cache@v3 | |
with: | |
path: ~/.npm # npm cache files are stored in `~/.npm` on Linux/macOS | |
key: npm-${{ hashFiles('package-lock.json') }} | |
restore-keys: | | |
npm-${{ hashFiles('package-lock.json') }} | |
npm- | |
- name: Before deploy | |
run: npm ci && npm run declarations | |
- name: Publish npm Package | |
run: | | |
npm version $RELEASE_VERSION --no-git-tag-version | |
npm publish --access public --tag beta | |
env: | |
NODE_AUTH_TOKEN: ${{ secrets.NPM_AUTH_TOKEN }} |