fix: workflow #4
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: Node.js Package Workflow | |
on: | |
push: | |
branches: | |
- master # Default branch | |
pull_request: | |
branches: | |
- '*' # Handles pull requests to any branch | |
jobs: | |
build-and-test: | |
runs-on: ubuntu-latest | |
permissions: | |
checks: write | |
contents: write | |
issues: write | |
pull-requests: write | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Setup Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 20 | |
cache: 'npm' | |
registry-url: 'https://registry.npmjs.org/' | |
- name: Install Dependencies | |
run: npm ci | |
- name: Build project | |
run: npm run build | |
- name: Run linter and formatter | |
run: npm run lint && npm run format | |
- name: Run audit | |
run: npm audit --omit=dev | |
- name: Run Tests | |
run: npm test -- --coverage --json --outputFile="report.json" | |
- uses: ArtiomTr/jest-coverage-report-action@v2 | |
with: | |
skip-step: all | |
coverage-file: report.json | |
base-coverage-file: report.json | |
output: comment, report-markdown | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
release: | |
needs: build-and-test | |
runs-on: ubuntu-latest | |
permissions: | |
contents: write | |
issues: write | |
pull-requests: write | |
packages: write | |
if: github.ref == 'refs/heads/master' # Only run this job for the master branch | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 # Important: for full git history | |
- name: Setup Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 20 | |
cache: 'npm' | |
- name: Setup .npmrc | |
run: | | |
echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" > .npmrc | |
- name: Install Dependencies | |
run: npm ci | |
- name: Publish to npm | |
run: npm publish | |
env: | |
NPM_TOKEN: ${{ secrets.NPM_TOKEN }} |