| name: Node.js CI Unix Platform | |
| on: [push, pull_request] | |
| env: | |
| PYTHON_VERSION: '3.11' | |
| permissions: | |
| contents: read | |
| jobs: | |
| test: | |
| timeout-minutes: 60 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| api_version: | |
| - standard | |
| - experimental | |
| node-version: | |
| - 22.x | |
| - 24.x | |
| - 26.x | |
| os: | |
| - macos-latest | |
| - ubuntu-latest | |
| compiler: | |
| - clang | |
| - gcc | |
| exclude: | |
| - os: macos-latest | |
| compiler: gcc # GCC is an alias for clang on the MacOS image. | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - name: Harden Runner | |
| uses: step-security/harden-runner@58077d3c7e43986b6b15fba718e8ea69e387dfcc # v2.15.1 | |
| with: | |
| egress-policy: audit | |
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| - name: Set up Python ${{ env.PYTHON_VERSION }} | |
| uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 | |
| with: | |
| python-version: ${{ env.PYTHON_VERSION }} | |
| - name: Use Node.js ${{ matrix.node-version }} | |
| uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 | |
| with: | |
| node-version: ${{ matrix.node-version }} | |
| - name: Check Node.js installation | |
| run: | | |
| node --version | |
| npm --version | |
| - name: Install dependencies | |
| run: | | |
| npm install | |
| # Node.js >= 26 requires node-gyp@13; older versions keep node-gyp@12 | |
| # (from package.json). | |
| - name: Use node-gyp@13 for Node.js >= 26 | |
| if: matrix.node-version == '26.x' | |
| run: npm install --no-save node-gyp@13 | |
| - name: npm test | |
| run: | | |
| if [ "${{ matrix.api_version }}" = "experimental" ]; then | |
| export NAPI_VERSION=2147483647 | |
| fi | |
| if [ "${{ matrix.compiler }}" = "gcc" ]; then | |
| export CC="gcc" CXX="g++" | |
| fi | |
| if [ "${{ matrix.compiler }}" = "clang" ]; then | |
| export CC="clang" CXX="clang++" | |
| fi | |
| echo "CC=\"$CC\" CXX=\"$CXX\"" | |
| echo "$CC --version" | |
| $CC --version | |
| echo "$CXX --version" | |
| $CXX --version | |
| export CFLAGS="$CFLAGS -O3 --coverage" LDFLAGS="$LDFLAGS --coverage" | |
| echo "CFLAGS=\"$CFLAGS\" LDFLAGS=\"$LDFLAGS\"" | |
| npm run pretest -- --verbose | |
| node test |