a node-gyp special #1109
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: [ '*' ] | |
pull_request: | |
branches: [ main ] | |
workflow_dispatch: | |
inputs: | |
testNetwork: | |
description: 'Run tests that require network connectivity' | |
required: false | |
default: '0' | |
jobs: | |
bundled_gdal_coverage: | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Use Node.js 20.x | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 20.x | |
- name: ccache | |
uses: hendrikmuhs/[email protected] | |
with: | |
max-size: 1000M | |
key: coverage | |
- run: npm install --ignore-scripts | |
- run: npx @mapbox/node-pre-gyp configure --debug --enable_coverage | |
env: | |
CXX: ccache g++ | |
CC: ccache gcc | |
- name: Build from sources | |
run: npx @mapbox/node-pre-gyp build -j max --debug --enable_coverage | |
env: | |
CXX: ccache g++ | |
CC: ccache gcc | |
- name: Run unit tests | |
run: npx c8 npm test | |
env: | |
MOCHA_TEST_NETWORK: 1 | |
- name: Collect code coverage | |
run: | | |
npm run gcov | |
npm run lcov | |
- run: npm run codecov | |
env: | |
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
test_distros_shared: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
linux-version: [ 'ubuntu:22.04', 'ubuntu:20.04', 'debian:bullseye', 'fedora:37', 'centos:stream9' ] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Use Node.js 20.x | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 20.x | |
- name: ccache | |
uses: hendrikmuhs/[email protected] | |
with: | |
max-size: 1000M | |
key: distros-shared-${{ matrix.linux-version }} | |
- run: npm run container dev ${{ matrix.linux-version }} 20 shared | |
env: | |
MOCHA_TEST_NETWORK: ${{ github.event.inputs.testNetwork }} | |
test_distros_bundled: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
linux-version: [ 'amazonlinux:2022' ] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Use Node.js 20.x | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 20.x | |
- name: ccache | |
uses: hendrikmuhs/[email protected] | |
with: | |
max-size: 1000M | |
key: distros-bundled-${{ matrix.linux-version }} | |
- run: npm run container dev ${{ matrix.linux-version }} 16 bundled | |
env: | |
MOCHA_TEST_NETWORK: ${{ github.event.inputs.testNetwork }} | |
test_node: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
node-version: [ 16, 18, 20, 21 ] | |
gdal-version: [ 'shared', 'bundled' ] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Use Node.js 20.x | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 20.x | |
- name: ccache | |
uses: hendrikmuhs/[email protected] | |
with: | |
max-size: 1000M | |
key: node-${{ matrix.node-version }} | |
- run: npm run container dev ubuntu:20.04 ${{ matrix.node-version }} ${{ matrix.gdal-version }} | |
env: | |
MOCHA_TEST_NETWORK: ${{ github.event.inputs.testNetwork }} | |
test_asan: | |
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 | |
- name: ccache | |
uses: hendrikmuhs/[email protected] | |
with: | |
max-size: 1000M | |
key: asan | |
- run: npm run container asan ubuntu:20.04 16 bundled | |
env: | |
MOCHA_TEST_NETWORK: ${{ github.event.inputs.testNetwork }} | |
test_mac: | |
runs-on: macos-11 | |
strategy: | |
matrix: | |
node-version: [ 16.x, 18.x, 20.x, 21.x ] | |
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/[email protected] | |
with: | |
max-size: 1000M | |
key: mac-${{ matrix.node-version }} | |
- run: npm install --ignore-scripts | |
- run: npx @mapbox/node-pre-gyp configure | |
env: | |
CXX: ccache g++ | |
CC: ccache gcc | |
- name: Build from sources | |
run: npx @mapbox/node-pre-gyp build -j max | |
env: | |
CXX: ccache g++ | |
CC: ccache gcc | |
- name: Run unit tests | |
run: npm test | |
env: | |
MOCHA_TEST_NETWORK: ${{ github.event.inputs.testNetwork }} | |
test_mac_debug: | |
runs-on: macos-11 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Use Node.js 20.x | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 20.x | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: "3.11" | |
- name: ccache | |
uses: hendrikmuhs/[email protected] | |
with: | |
max-size: 1000M | |
key: mac-debug | |
- run: npm install --ignore-scripts | |
- run: npx @mapbox/node-pre-gyp configure --debug | |
env: | |
CXX: ccache g++ | |
CC: ccache gcc | |
- name: Build from sources | |
run: npx @mapbox/node-pre-gyp build -j max | |
env: | |
CXX: ccache g++ | |
CC: ccache gcc | |
- name: Run unit tests | |
run: npm test | |
env: | |
MOCHA_TEST_NETWORK: ${{ github.event.inputs.testNetwork }} | |
test_win: | |
runs-on: windows-2019 | |
strategy: | |
matrix: | |
node-version: [ 16.x, 18.x, 20.x, 21.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: npm install node-gyp | |
- run: npx @mapbox/node-pre-gyp configure | |
- name: Build from sources | |
run: npx @mapbox/node-pre-gyp build -j max | |
- name: Run unit tests | |
run: npm test | |
env: | |
MOCHA_TEST_NETWORK: ${{ github.event.inputs.testNetwork }} | |
test_win_debug: | |
runs-on: windows-2019 | |
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: npx @mapbox/node-pre-gyp configure --debug | |
- name: Build from sources | |
run: npx @mapbox/node-pre-gyp build -j max | |
- name: Run unit tests | |
run: npm test | |
env: | |
MOCHA_TEST_NETWORK: ${{ github.event.inputs.testNetwork }} |