build(deps-dev): bump eslint from 9.9.0 to 9.9.1 in the eslint group … #1289
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
name: Node.js CI | |
on: | |
push: | |
branches: ["*"] | |
pull_request: | |
branches: ["*"] | |
env: | |
BUILTIN_PYTHON_VERSION: 3.12.2 | |
jobs: | |
shared_python: | |
runs-on: ${{ matrix.platform }} | |
strategy: | |
fail-fast: false | |
matrix: | |
platform: [ubuntu-20.04, ubuntu-22.04, ubuntu-24.04, macos-12, macos-14, windows-2019] | |
node-version: [16.x, 18.x, 20.x, 22.x] | |
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"] | |
exclude: | |
- node-version: 16.x | |
platform: ubuntu-22.04 | |
- node-version: 16.x | |
platform: ubuntu-24.04 | |
- node-version: 16.x | |
python-version: 3.12 | |
- platform: ubuntu-24.04 | |
python-version: 3.8 | |
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: ${{ matrix.python-version }} | |
- run: npm install --ignore-scripts | |
- run: npx @mapbox/node-pre-gyp configure | |
- run: npx @mapbox/node-pre-gyp build -j max | |
- run: python3 -m pip install --upgrade pip | |
- run: pip3 install -r test/requirements.txt | |
- run: npm test | |
builtin_python: | |
runs-on: ${{ matrix.platform }} | |
strategy: | |
matrix: | |
platform: [ubuntu-20.04, macos-12, macos-14, windows-2019] | |
node-version: [16.x, 18.x, 20.x, 22.x] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- 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: Install conan | |
uses: turtlebrowser/get-conan@main | |
- name: Get conan home | |
id: conan_home | |
shell: bash | |
run: echo CONAN_HOME=`conan config home` >> "$GITHUB_OUTPUT" | |
- name: Cache conan artifacts | |
uses: actions/cache@v4 | |
with: | |
path: ${{ steps.conan_home.outputs.CONAN_HOME }} | |
key: ${{ runner.os }}-${{ runner.arch }} | |
- run: npm install --ignore-scripts | |
- run: npx @mapbox/node-pre-gyp configure --builtin-python=true | |
- run: npx @mapbox/node-pre-gyp build -j max | |
- run: node ./scripts/pympip install --upgrade pip | |
- run: node ./scripts/pympip install -r test/requirements.txt | |
- run: npm test | |
- run: | | |
node ./scripts/pympip install --no-binary :all: xxhash | |
node -e "require('pymport').pymport('xxhash')" | |
external_python: | |
runs-on: ${{ matrix.platform }} | |
strategy: | |
matrix: | |
platform: [ubuntu-latest, macos-12, macos-14] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- name: Use Node.js 18.x | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 18.x | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: "3.11" | |
- name: set LIBS | |
run: echo LIBS=`pkg-config --libs python3-embed` >> $GITHUB_ENV | |
- name: set CXXFLAGS | |
run: echo CXXFLAGS=`pkg-config --cflags python3-embed` >> $GITHUB_ENV | |
- run: npm install --ignore-scripts | |
- run: npx @mapbox/node-pre-gyp configure --external_python | |
- run: npx @mapbox/node-pre-gyp build -j max | |
- run: python3 -m pip install --upgrade pip | |
- run: pip3 install -r test/requirements.txt | |
- run: npm test | |
external_python_wo_rebuild_posix: | |
runs-on: ${{ matrix.platform }} | |
strategy: | |
matrix: | |
platform: [ubuntu-latest, macos-12, macos-14] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- name: Use Node.js 18.x | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 18.x | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ env.BUILTIN_PYTHON_VERSION }} | |
- run: npm install | |
- run: pip3 install -r test/requirements.txt | |
- name: Find system Python | |
run: echo PYTHONHOME=$(python -c "import sys; print(sys.prefix)") >> $GITHUB_ENV | |
- name: Test PYTHONOME | |
run: echo READ_PYTHONHOME=$(node -e "console.log(require('pymport').version.pythonHome)") >> $GITHUB_ENV | |
- uses: nick-fields/assert-action@v2 | |
with: | |
expected: ${{ env.PYTHONHOME }} | |
actual: ${{ env.READ_PYTHONHOME }} | |
comparison: exact | |
- run: npm test | |
env: | |
MOCHA_SKIP_VERSION_CHECK: 1 | |
external_python_wo_rebuild_win: | |
runs-on: windows-2019 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- name: Use Node.js 18.x | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 18.x | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: "3.12" | |
- run: npm install | |
- run: pip3 install -r test/requirements.txt | |
- name: Find system Python | |
run: echo PYTHONHOME=$(python -c "import sys; print(sys.prefix)") >> $env:GITHUB_ENV | |
- name: Test PYTHONHOME | |
run: echo READ_PYTHONHOME=$(node -e "console.log(require('pymport').version.pythonHome)") >> $env:GITHUB_ENV | |
- uses: nick-fields/assert-action@v2 | |
with: | |
expected: ${{ env.PYTHONHOME }} | |
actual: ${{ env.READ_PYTHONHOME }} | |
comparison: exact | |
- run: npm test | |
debug_build: | |
runs-on: ${{ matrix.platform }} | |
strategy: | |
matrix: | |
platform: [macos-12, windows-2019] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- name: Use Node.js 18.x | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 18.x | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: "3.11" | |
- run: npm install --ignore-scripts | |
- run: npx @mapbox/node-pre-gyp configure --debug | |
- run: npx @mapbox/node-pre-gyp build -j max | |
- run: python3 -m pip install --upgrade pip | |
- run: pip3 install -r test/requirements.txt | |
- run: npm test | |
env: | |
PYMPORT_DEBUG_INIT: 1 | |
codecov: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 2 | |
submodules: true | |
- name: Use Node.js 18.x | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 18.x | |
- run: npm install --ignore-scripts | |
- run: npx node-pre-gyp configure --debug --enable_coverage | |
- run: npx node-pre-gyp build | |
- run: python3 -m pip install --upgrade pip | |
- run: pip3 install -r test/requirements.txt | |
- run: npx c8 npm test | |
env: | |
PYMPORT_DEBUG_INIT: 1 | |
- run: npm run gcov | |
- run: npm run lcov | |
- uses: codecov/codecov-action@v3 | |
with: | |
fail_ci_if_error: true | |
directory: ${{ github.workspace }}/coverage | |
token: ${{ secrets.CODECOV_TOKEN }} | |
verbose: true |