Skip to content

Merge pull request #72 from shebinleo/replace-gm-lib-with-sharp #52

Merge pull request #72 from shebinleo/replace-gm-lib-with-sharp

Merge pull request #72 from shebinleo/replace-gm-lib-with-sharp #52

Workflow file for this run

# This workflow will do a clean installation of node dependencies, cache/restore them, build the source code and run tests across different versions of node
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions
name: Node.js CI
on:
push:
branches: [main]
pull_request:
branches: [main, develop, release/**]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [18.x, 20.x, 22.x]
include:
- node-version: 22.x
experimental: true
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'
cache-dependency-path: package-lock.json
- name: Install dependencies
run: npm ci
- name: Build (if present)
run: npm run build --if-present
- name: Run TypeScript type tests
run: npm run test:types
- name: Run tests with coverage
run: npm run test:coverage
continue-on-error: ${{ matrix.experimental == true }}
- name: Generate coverage reports
if: matrix.node-version == '20.x'
run: |
npm run test:coverage:text
npm run test:coverage:lcov
echo "### Test Coverage Report" >> $GITHUB_STEP_SUMMARY
echo '```' >> $GITHUB_STEP_SUMMARY
npx nyc report --reporter=text-summary >> $GITHUB_STEP_SUMMARY
echo '```' >> $GITHUB_STEP_SUMMARY
- name: Upload coverage artifacts
if: matrix.node-version == '20.x'
uses: actions/upload-artifact@v4
with:
name: coverage-report
path: coverage/
retention-days: 7
- name: Comment PR with coverage
if: matrix.node-version == '20.x' && github.event_name == 'pull_request'
uses: romeovs/lcov-reporter-action@v0.3.1
with:
lcov-file: ./coverage/lcov.info
github-token: ${{ secrets.GITHUB_TOKEN }}
coverage-check:
needs: build
runs-on: ubuntu-latest
if: github.event_name == 'pull_request'
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20.x'
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Check coverage thresholds
run: |
npm run test:coverage
echo "### Coverage Threshold Check" >> $GITHUB_STEP_SUMMARY
echo '```' >> $GITHUB_STEP_SUMMARY
npx nyc report --reporter=text >> $GITHUB_STEP_SUMMARY
echo '```' >> $GITHUB_STEP_SUMMARY
- name: Enforce coverage thresholds
run: |
npx nyc check-coverage --lines 80 --functions 80 --branches 80 --statements 80