use fvisibility=hidden
on POSIX platforms (#105)
#860
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: ["*"] | |
env: | |
BUILTIN_PYTHON_VERSION: 3.10.13 | |
jobs: | |
shared_python: | |
runs-on: ${{ matrix.platform }} | |
strategy: | |
fail-fast: false | |
matrix: | |
platform: [ubuntu-20.04, ubuntu-22.04, macos-11, windows-2019] | |
node-version: [16.x, 18.x, 20.x] | |
python-version: ["3.8", "3.9", "3.10", "3.11"] | |
exclude: | |
- node-version: 16.x | |
platform: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Use Node.js ${{ matrix.node-version }} | |
uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ matrix.node-version }} | |
- uses: actions/setup-python@v4 | |
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-11, windows-2019] | |
node-version: [16.x, 18.x, 20.x] | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Use Node.js ${{ matrix.node-version }} | |
uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ matrix.node-version }} | |
- 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-11] | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Use Node.js 18.x | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 18.x | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: "3.10" | |
- 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-11] | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Use Node.js 18.x | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 18.x | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: "3.10" | |
- run: npm install --ignore-scripts | |
- run: npx @mapbox/node-pre-gyp configure --builtin_python | |
- run: npx @mapbox/node-pre-gyp build -j max | |
- run: python3 -m pip install --upgrade pip | |
- 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/[email protected] | |
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@v3 | |
- name: Use Node.js 18.x | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 18.x | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: "3.10" | |
- run: npm install --ignore-scripts | |
- run: npx @mapbox/node-pre-gyp configure --builtin_python | |
- run: npx @mapbox/node-pre-gyp build -j max | |
- run: python3 -m pip install --upgrade pip | |
- 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/[email protected] | |
with: | |
expected: ${{ env.PYTHONHOME }} | |
actual: ${{ env.READ_PYTHONHOME }} | |
comparison: exact | |
- run: npm test | |
debug_build: | |
runs-on: ${{ matrix.platform }} | |
strategy: | |
matrix: | |
platform: [macos-11, windows-2019] | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Use Node.js 18.x | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 18.x | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: "3.10" | |
- 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@v3 | |
- name: Use Node.js 18.x | |
uses: actions/setup-node@v3 | |
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 | |
- run: npm run codecov | |
env: | |
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} |