| name: Node.js CI Unix Platform |
| |
| on: [push, pull_request] |
| |
| env: |
| PYTHON_VERSION: '3.11' |
| |
| permissions: |
| contents: read |
| |
| jobs: |
| test: |
| timeout-minutes: 30 |
| strategy: |
| fail-fast: false |
| matrix: |
| api_version: |
| - standard |
| - experimental |
| node-version: |
| - 20.x |
| - 22.x |
| - 24.x |
| - 25.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@20cf305ff2072d973412fa9b1e3a4f227bda3c76 # v2.14.0 |
| with: |
| egress-policy: audit |
| |
| - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 |
| - name: Set up Python ${{ env.PYTHON_VERSION }} |
| uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0 |
| with: |
| python-version: ${{ env.PYTHON_VERSION }} |
| - name: Use Node.js ${{ matrix.node-version }} |
| uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 |
| with: |
| node-version: ${{ matrix.node-version }} |
| - name: Check Node.js installation |
| run: | |
| node --version |
| npm --version |
| - name: Install dependencies |
| run: | |
| npm install |
| - 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 |