Implement GDAL RFC 101 #1214
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: [ '*' ] | |
paths-ignore: | |
'*.md' | |
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/ccache-action@v1.2 | |
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: | |
fail-fast: false | |
matrix: | |
linux-version: | |
- ubuntu:20.04 | |
- ubuntu:22.04 | |
- ubuntu:24.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/ccache-action@v1.2 | |
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: | |
fail-fast: false | |
matrix: | |
linux-version: [ 'amazonlinux:2022', 'ubuntu:24.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/ccache-action@v1.2 | |
with: | |
max-size: 1000M | |
key: distros-bundled-${{ matrix.linux-version }} | |
- run: npm run container dev ${{ matrix.linux-version }} 18 bundled | |
env: | |
MOCHA_TEST_NETWORK: ${{ github.event.inputs.testNetwork }} | |
test_node: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
node-version: [ 18, 20, 22, 23 ] | |
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/ccache-action@v1.2 | |
with: | |
max-size: 1000M | |
key: node-${{ matrix.node-version }} | |
- run: npm run container dev ubuntu:22.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/ccache-action@v1.2 | |
with: | |
max-size: 1000M | |
key: asan | |
- run: npm run container asan ubuntu:20.04 18 bundled | |
env: | |
MOCHA_TEST_NETWORK: ${{ github.event.inputs.testNetwork }} | |
test_mac: | |
runs-on: macos-13 | |
strategy: | |
fail-fast: false | |
matrix: | |
node-version: [ 18.x, 20.x, 22.x, 23.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/ccache-action@v1.2 | |
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-13 | |
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/ccache-action@v1.2 | |
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: | |
fail-fast: false | |
matrix: | |
node-version: [ 18.x, 20.x, 22.x, 23.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 }} |