switch CI to macos-13 #526
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
# This workflow will do a clean install of node dependencies, 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 ] | |
workflow_dispatch: | |
inputs: | |
testConcurrency: | |
description: 'Check that parallel tests run in parallel (requires real CPUs)' | |
required: false | |
default: '0' | |
jobs: | |
lint: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Use Node.js 20.x | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 20.x | |
- run: npm install --ignore-scripts | |
- run: npm run lint | |
unix: | |
runs-on: ${{ matrix.platforms }} | |
strategy: | |
matrix: | |
node-version: [ 18.x, 20.x, 22.x ] | |
platforms: [ ubuntu-20.04, macos-13, macos-14 ] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Use Node.js ${{ matrix.node-version }} | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node-version }} | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: 3.11 | |
- name: ccache | |
uses: hendrikmuhs/ccache-action@v1 | |
with: | |
key: unix-${{ matrix.platforms }}-${{ matrix.node-version }} | |
- run: npm install --ignore-scripts | |
- run: npx node-pre-gyp configure | |
env: | |
CXX: ccache g++ | |
CC: ccache gcc | |
- name: Build from sources | |
run: npx node-pre-gyp build -j max | |
env: | |
CXX: ccache g++ | |
CC: ccache gcc | |
- name: Run unit tests | |
run: npm test | |
env: | |
MOCHA_TEST_CONCURRENCY: ${{ github.event.inputs.testConcurrency }} | |
windows: | |
runs-on: windows-2019 | |
strategy: | |
matrix: | |
node-version: [ 18.x, 20.x, 22.x ] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Use Node.js ${{ matrix.node-version }} | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node-version }} | |
- run: npm install --ignore-scripts | |
- run: npx node-pre-gyp configure | |
- name: Build from sources | |
run: npx node-pre-gyp build -j max | |
- name: Run unit tests | |
run: npm test | |
env: | |
MOCHA_TEST_CONCURRENCY: ${{ github.event.inputs.testConcurrency }} | |
codecov: | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Use Node.js 18.x | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 18.x | |
- name: ccache | |
uses: hendrikmuhs/ccache-action@v1 | |
with: | |
key: codecov | |
- run: npm install --ignore-scripts | |
- run: npx node-pre-gyp configure --debug --enable_coverage | |
env: | |
CXX: ccache g++ | |
CC: ccache gcc | |
- name: Build from sources | |
run: npx node-pre-gyp build -j max | |
env: | |
CXX: ccache g++ | |
CC: ccache gcc | |
- name: Run unit tests | |
run: npx c8 npm test | |
env: | |
MOCHA_TEST_CONCURRENCY: 0 | |
- name: Collect coverage data | |
run: | | |
npm run gcov | |
npm run lcov | |
- name: Send data to codecov | |
run: npm run codecov | |
env: | |
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
asan: | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Use Node.js 18.x | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 18.x | |
- name: ccache | |
uses: hendrikmuhs/ccache-action@v1 | |
with: | |
key: asan | |
- run: npm install --ignore-scripts | |
- run: npx node-pre-gyp configure --debug --enable_coverage --enable_asan | |
env: | |
CXX: ccache g++ | |
CC: ccache gcc | |
- name: Build from sources | |
run: npx node-pre-gyp build -j max | |
env: | |
CXX: ccache g++ | |
CC: ccache gcc | |
- name: Run unit tests | |
shell: bash {0} | |
run: | | |
LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libasan.so.5.0.0 npm test &> asan.output | |
true | |
env: | |
MOCHA_TEST_CONCURRENCY: 0 | |
MOCHA_SKIP_EXEC: 1 | |
- name: Check for memory leaks | |
run: "! egrep -q \"exprtk_js\" asan.output" |