Skip to content

14.0.0

14.0.0 #145

Workflow file for this run

name: Node.js CI
on: [push]
env:
DEFAULT_NODE_VERSION: '20.x'
DEFAULT_OS_VERSION: 'ubuntu-latest'
CI: true
HUSKY: 0
jobs:
build:
name: Test
strategy:
fail-fast: false
max-parallel: 15
matrix:
os: [macos-latest, windows-latest, ubuntu-latest]
node-version: [18.x, 20.x, 22.x]
runs-on: ${{ matrix.os }}
env:
OS: ${{ matrix.os }}
NODE_VERSION: ${{ matrix.node-version }}
outputs:
is-release-candidate: ${{ steps.is-release-candidate.outputs.is-release-candidate }}
artifact-name: ${{ steps.set-artifact-name.outputs.artifact-name }}
steps:
- name: Set git to use LF
run: |
git config --global core.autocrlf false
git config --global core.eol lf
- uses: actions/checkout@v4
- name: Setup Cache
uses: actions/cache@v4
with:
path: '**/node_modules'
key: ${{ matrix.os }}-${{ matrix.node-version }}-pkgs-${{ hashFiles('**/package.json') }}
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- name: Install packages
run: npm install --ignore-scripts
- name: Clean
run: npm run clean
- name: Prettier Check
run: npm run prettier-check
- name: Build
run: npm run build
- name: Test
run: npm run test
- name: Docs
run: npm run docs
- name: Main CLI version smoke test
run: node ./dist/cli/leasot.js --version
- name: Main CLI smoke test
run: node ./dist/cli/leasot.js --help
- name: Reporter CLI smoke test
run: node ./dist/cli/leasot-reporter.js --help
- name: Check if release candidate
id: is-release-candidate
run: echo "is-release-candidate=${{ matrix.node-version == env.DEFAULT_NODE_VERSION && matrix.os == env.DEFAULT_OS_VERSION }}" >> $GITHUB_OUTPUT
- if: steps.is-release-candidate.outputs.is-release-candidate == 'true'
name: Set artifact build name output
id: set-artifact-name
run: echo "artifact-name=build-${{ matrix.os }}-${{ matrix.node-version }}" >> $GITHUB_OUTPUT
- if: steps.is-release-candidate.outputs.is-release-candidate == 'true'
uses: actions/upload-artifact@v4
with:
name: ${{ steps.set-artifact-name.outputs.artifact-name }}
retention-days: 7
path: |
./
!./node_modules/**/*
!./tests/**/*
!./media/**/*
!./src/**/*
ensure-valid-artifact:
name: Ensure valid artifact
runs-on: ubuntu-latest
needs: build
steps:
- uses: actions/download-artifact@v4
with:
name: ${{ needs.build.outputs.artifact-name }}
- name: Check artifact
run: test -d "./dist"
deploy-docs:
name: Deploy Docs
if: ${{ startsWith(github.ref, 'refs/tags/v') }}
runs-on: ubuntu-latest
needs: [build, ensure-valid-artifact]
steps:
- uses: actions/download-artifact@v4
with:
name: ${{ needs.build.outputs.artifact-name }}
- name: Deploy Docs
uses: peaceiris/actions-gh-pages@v4
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./docs
deploy-npm:
name: Deploy NPM
if: ${{ startsWith(github.ref, 'refs/tags/v') }}
runs-on: ubuntu-latest
needs: [build, ensure-valid-artifact]
steps:
- uses: actions/download-artifact@v4
with:
name: ${{ needs.build.outputs.artifact-name }}
- name: Use Node.js ${{ env.DEFAULT_NODE_VERSION }} with NPM registry
uses: actions/setup-node@v4
with:
node-version: ${{ env.DEFAULT_NODE_VERSION }}
registry-url: 'https://registry.npmjs.org'
- name: Disable prepare script (for husky)
run: npm set-script prepare ""
- name: Publish to NPM
run: npm publish --access public --ignore-scripts
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}