Skip to content

Implement GDAL RFC 101 #1214

Implement GDAL RFC 101

Implement GDAL RFC 101 #1214

Workflow file for this run

# 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 }}