;lkj #951
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
# for github runner images, see: https://github.com/actions/runner-images?tab=readme-ov-file#available-images | |
name: interpret-CI | |
on: | |
push: | |
pull_request: | |
workflow_dispatch: | |
inputs: | |
commit_id: | |
description: 'Commit ID (optional)' | |
required: false | |
schedule: | |
- cron: "0 12 * * *" | |
jobs: | |
bld: | |
strategy: | |
matrix: | |
include: | |
- name: linux_release_64 | |
image: ubuntu-20.04 | |
options: "-release_64" | |
asm: "-asm" | |
- name: linux_debug_64 | |
image: ubuntu-20.04 | |
options: "-debug_64" | |
asm: "" | |
- name: mac_release_64 | |
image: macos-13 # macos-13 is an intel based mac | |
options: "-release_64" | |
asm: "-asm" | |
- name: mac_debug_64 | |
image: macos-13 # macos-13 is an intel based mac | |
options: "-debug_64" | |
asm: "" | |
- name: mac_release_arm | |
image: macos-14 # macos-14 is an ARM based mac | |
options: "-release_arm" | |
asm: "-asm" | |
- name: mac_debug_arm | |
image: macos-14 # macos-14 is an ARM based mac | |
options: "-debug_arm" | |
asm: "" | |
- name: win_release_64 | |
image: windows-2022 | |
options: "-release_64" | |
asm: "" | |
- name: win_debug_64 | |
image: windows-2022 | |
options: "-debug_64" | |
asm: "" | |
runs-on: ${{ matrix.image }} | |
steps: | |
- name: Check out repo | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ github.event_name == 'workflow_dispatch' && inputs.commit_id || github.sha }} | |
- name: Build on Windows | |
if: startsWith(matrix.image, 'windows') | |
run: | | |
$env:PATH += ';C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Current\Bin' | |
$env:CudaToolkitDir = 'C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2' | |
python -c "from urllib.request import urlretrieve; urlretrieve('https://developer.download.nvidia.com/compute/cuda/11.2.2/network_installers/cuda_11.2.2_win10_network.exe', 'cuda_11.2.2_win10_network.exe')" | |
./cuda_11.2.2_win10_network.exe -s nvcc_11.2 visual_studio_integration_11.2 cudart_11.2 | |
if ($LASTEXITCODE -ne 0) { | |
Write-Error "cuda_11.2.2_win10_network.exe FAILED" | |
exit 201 | |
} | |
./build.bat ${{ matrix.options }} ${{ matrix.asm }} | |
- name: Build on Linux | |
if: startsWith(matrix.image, 'ubuntu') | |
run: | | |
sudo apt --yes update | |
sudo apt --yes install nvidia-cuda-toolkit | |
/bin/sh ./build.sh ${{ matrix.options }} ${{ matrix.asm }} | |
- name: Build on macOS | |
if: startsWith(matrix.image, 'macos') | |
run: | | |
/bin/sh ./build.sh ${{ matrix.options }} ${{ matrix.asm }} | |
- name: Publish shared library | |
uses: actions/upload-artifact@v4 | |
with: | |
name: libebm_${{ matrix.name }} | |
path: bld/lib | |
- name: Publish assembly | |
if: ${{ matrix.asm != '' }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: asm_${{ matrix.name }} | |
path: bld/asm/ | |
vis: | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Check out repo | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ github.event_name == 'workflow_dispatch' && inputs.commit_id || github.sha }} | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: '18.x' | |
- name: Build vis | |
run: | | |
cd shared/vis | |
npm install | |
npm run build-prod | |
- name: Publish interpret-inline.js library | |
uses: actions/upload-artifact@v4 | |
with: | |
name: vis | |
path: shared/vis/dist | |
npm: | |
needs: [bdist] # bdist is not needed but slow this step down | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Check out repo | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ github.event_name == 'workflow_dispatch' && inputs.commit_id || github.sha }} | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: '18.x' | |
- name: Build npm package | |
run: | | |
cd shared/vis | |
npm install | |
npm run build-prod | |
npm pack | |
mkdir pkg | |
cp *.tgz pkg/ | |
- name: Publish npm package | |
uses: actions/upload-artifact@v4 | |
with: | |
name: npm | |
path: shared/vis/pkg | |
sdist: | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Check out repo | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ github.event_name == 'workflow_dispatch' && inputs.commit_id || github.sha }} | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.9" | |
- name: Build sdist package | |
run: | | |
python -m pip install --upgrade pip setuptools wheel | |
cd python/interpret-core | |
python setup.py sdist -d ../../bld/sdist | |
cd ../interpret | |
python setup.py sdist -d ../../bld/sdist | |
- name: Publish sdist package | |
uses: actions/upload-artifact@v4 | |
with: | |
name: sdist | |
path: bld/sdist | |
bdist: | |
runs-on: ubuntu-20.04 | |
needs: [bld, vis] | |
steps: | |
- name: Check out repo | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ github.event_name == 'workflow_dispatch' && inputs.commit_id || github.sha }} | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.9" | |
- name: Download libebm artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
pattern: libebm_* | |
merge-multiple: true | |
path: python/interpret-core/interpret/root/bld/lib/ | |
- name: Download vis artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: vis | |
path: python/interpret-core/interpret/root/bld/lib/ | |
- name: Build bdist package | |
run: | | |
python -m pip install --upgrade pip setuptools wheel | |
cd python/interpret-core | |
python setup.py bdist_wheel -d ../../bld/bdist | |
cd ../interpret | |
python setup.py bdist_wheel -d ../../bld/bdist | |
- name: Publish bdist package | |
uses: actions/upload-artifact@v4 | |
with: | |
name: bdist | |
path: bld/bdist | |
powerlift: | |
needs: [bdist] # bdist is not needed but slow this step down | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Check out repo | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ github.event_name == 'workflow_dispatch' && inputs.commit_id || github.sha }} | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.9" | |
- name: Build powerlift package | |
run: | | |
python -m pip install --upgrade pip setuptools wheel | |
cd python/powerlift | |
python setup.py bdist_wheel -d ../../bld/powerlift | |
- name: Publish powerlift package | |
uses: actions/upload-artifact@v4 | |
with: | |
name: powerlift | |
path: bld/powerlift | |
test_powerlift: | |
needs: [powerlift] | |
strategy: | |
matrix: | |
include: | |
- name: linux_312_python | |
python_ver: "3.12" | |
image: ubuntu-latest | |
# - name: mac_312_python | |
# python_ver: "3.12" | |
# image: macos-latest | |
- name: win_312_python | |
python_ver: "3.12" | |
image: windows-latest | |
runs-on: ${{ matrix.image }} | |
steps: | |
- name: Check out repo | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ github.event_name == 'workflow_dispatch' && inputs.commit_id || github.sha }} | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python_ver }} | |
- name: Download powerlift artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: powerlift | |
path: bld/powerlift | |
- name: pytest (non-win) | |
if: ${{ !startsWith(matrix.image, 'windows') }} | |
run: | | |
python -m pip install --upgrade pip setuptools wheel | |
install_file=$(echo bld/powerlift/powerlift-*.whl) | |
install_file=$(basename "$install_file" .whl) | |
python -m pip install "bld/powerlift/$install_file.whl[datasets,docker,postgres,mssql,aci,testing]" | |
mkdir -p "tmp/zqmr/t" | |
cp -R "python/powerlift/tests/" "tmp/zqmr/t/" | |
cd "tmp/zqmr/t" | |
python -m pytest -vv -n auto --cov=powerlift --cov-report=xml | |
- name: pytest (win) | |
if: ${{ startsWith(matrix.image, 'windows') }} | |
run: | | |
python -m pip install --upgrade pip setuptools wheel | |
$install_file = Get-ChildItem -Path "bld/powerlift" -Filter "powerlift-*.whl" | |
$install_file = $install_file.Name -replace '\.whl$', '' | |
$env:PATH += ';C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Current\Bin' | |
python -m pip install "bld/powerlift/$install_file.whl[datasets,docker,postgres,mssql,aci,testing]" | |
New-Item -Path "tmp/zqmr/t" -ItemType Directory -Force | |
xcopy /E "python\powerlift\tests\*" "tmp\zqmr\t\" | |
cd "tmp/zqmr/t" | |
$env:PATH += ";$env:GeckoWebDriver" | |
python -m pytest -vv -n auto --cov=powerlift --cov-report=xml | |
testS: | |
needs: [sdist] | |
strategy: | |
matrix: | |
include: | |
- name: linux_39_python | |
python_ver: "3.9" | |
image: ubuntu-latest | |
- name: linux_310_python | |
python_ver: "3.10" | |
image: ubuntu-latest | |
- name: linux_311_python | |
python_ver: "3.11" | |
image: ubuntu-latest | |
- name: linux_312_python | |
python_ver: "3.12" | |
image: ubuntu-latest | |
- name: mac_39_python | |
python_ver: "3.9" | |
image: macos-latest | |
- name: mac_310_python | |
python_ver: "3.10" | |
image: macos-latest | |
- name: mac_311_python | |
python_ver: "3.11" | |
image: macos-latest | |
- name: mac_312_python | |
python_ver: "3.12" | |
image: macos-latest | |
- name: win_39_python | |
python_ver: "3.9" | |
image: windows-latest | |
- name: win_310_python | |
python_ver: "3.10" | |
image: windows-latest | |
- name: win_311_python | |
python_ver: "3.11" | |
image: windows-latest | |
- name: win_312_python | |
python_ver: "3.12" | |
image: windows-latest | |
runs-on: ${{ matrix.image }} | |
steps: | |
- name: Check out repo | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ github.event_name == 'workflow_dispatch' && inputs.commit_id || github.sha }} | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python_ver }} | |
- name: Download sdist artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: sdist | |
path: bld/sdist | |
- name: pytest (non-win) | |
continue-on-error: true | |
if: ${{ !startsWith(matrix.image, 'windows') }} | |
run: | | |
python -m pip install --upgrade pip setuptools wheel | |
install_file=$(echo bld/sdist/interpret_core-*.tar.gz) | |
install_file=$(basename "$install_file" .tar.gz) | |
python -m pip install "bld/sdist/$install_file.tar.gz[debug,notebook,plotly,lime,sensitivity,shap,linear,treeinterpreter,aplr,dash,skoperules,testing]" | |
mkdir -p "tmp/zqmr/t" | |
tar -xzvf "bld/sdist/$install_file.tar.gz" -C "tmp/zqmr/t" "$install_file/tests" | |
cd "tmp/zqmr/t" | |
python -m pytest -vv -n auto --cov=interpret --cov-report=xml | |
- name: pytest (win) | |
continue-on-error: true | |
if: ${{ startsWith(matrix.image, 'windows') }} | |
run: | | |
python -m pip install --upgrade pip setuptools wheel | |
$install_file = Get-ChildItem -Path "bld/sdist" -Filter "interpret_core-*.tar.gz" | |
$install_file = $install_file.Name -replace '\.tar\.gz$', '' | |
$env:PATH += ';C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Current\Bin' | |
python -m pip install "bld/sdist/$install_file.tar.gz[debug,notebook,plotly,lime,sensitivity,shap,linear,treeinterpreter,aplr,dash,skoperules,testing]" | |
New-Item -Path "tmp/zqmr/t" -ItemType Directory -Force | |
tar -xzvf "bld/sdist/$install_file.tar.gz" -C "tmp/zqmr/t" "$install_file/tests" | |
cd "tmp/zqmr/t" | |
$env:PATH += ";$env:GeckoWebDriver" | |
python -m pytest -vv -n auto --cov=interpret --cov-report=xml | |
- name: Code coverage report | |
continue-on-error: true | |
if: always() | |
uses: codecov/codecov-action@v4 | |
with: | |
files: tmp/zqmr/t/coverage.xml | |
flags: sdist_${{ matrix.name }} | |
name: codecov_sdist_${{ matrix.name }} | |
token: ${{ secrets.CODECOV_TOKEN }} | |
testB: | |
needs: [bdist] | |
strategy: | |
matrix: | |
include: | |
- name: linux_39_python | |
python_ver: "3.9" | |
image: ubuntu-latest | |
- name: linux_310_python | |
python_ver: "3.10" | |
image: ubuntu-latest | |
- name: linux_311_python | |
python_ver: "3.11" | |
image: ubuntu-latest | |
- name: linux_312_python | |
python_ver: "3.12" | |
image: ubuntu-latest | |
- name: mac_39_python | |
python_ver: "3.9" | |
image: macos-latest | |
- name: mac_310_python | |
python_ver: "3.10" | |
image: macos-latest | |
- name: mac_311_python | |
python_ver: "3.11" | |
image: macos-latest | |
- name: mac_312_python | |
python_ver: "3.12" | |
image: macos-latest | |
- name: win_39_python | |
python_ver: "3.9" | |
image: windows-latest | |
- name: win_310_python | |
python_ver: "3.10" | |
image: windows-latest | |
- name: win_311_python | |
python_ver: "3.11" | |
image: windows-latest | |
- name: win_312_python | |
python_ver: "3.12" | |
image: windows-latest | |
runs-on: ${{ matrix.image }} | |
steps: | |
- name: Check out repo | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ github.event_name == 'workflow_dispatch' && inputs.commit_id || github.sha }} | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python_ver }} | |
- name: Download bdist artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: bdist | |
path: bld/bdist | |
- name: pytest (non-win) | |
continue-on-error: true | |
if: ${{ !startsWith(matrix.image, 'windows') }} | |
run: | | |
python -m pip install --upgrade pip setuptools wheel | |
install_file=$(echo bld/bdist/interpret_core-*.whl) | |
install_file=$(basename "$install_file" .whl) | |
python -m pip install "bld/bdist/$install_file.whl[debug,notebook,plotly,lime,sensitivity,shap,linear,treeinterpreter,aplr,dash,skoperules,testing]" | |
mkdir -p "tmp/zqmr/t" | |
cp -R "python/interpret-core/tests/" "tmp/zqmr/t/" | |
cd "tmp/zqmr/t" | |
python -m pytest -vv -n auto --cov=interpret --cov-report=xml | |
- name: pytest (win) | |
continue-on-error: true | |
if: ${{ startsWith(matrix.image, 'windows') }} | |
run: | | |
python -m pip install --upgrade pip setuptools wheel | |
$install_file = Get-ChildItem -Path "bld/bdist" -Filter "interpret_core-*.whl" | |
$install_file = $install_file.Name -replace '\.whl$', '' | |
$env:PATH += ';C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Current\Bin' | |
python -m pip install "bld/bdist/$install_file.whl[debug,notebook,plotly,lime,sensitivity,shap,linear,treeinterpreter,aplr,dash,skoperules,testing]" | |
New-Item -Path "tmp/zqmr/t" -ItemType Directory -Force | |
xcopy /E "python\interpret-core\tests\*" "tmp\zqmr\t\" | |
cd "tmp/zqmr/t" | |
$env:PATH += ";$env:GeckoWebDriver" | |
python -m pytest -vv -n auto --cov=interpret --cov-report=xml | |
- name: Code coverage report | |
continue-on-error: true | |
if: always() | |
uses: codecov/codecov-action@v4 | |
with: | |
files: tmp/zqmr/t/coverage.xml | |
flags: bdist_${{ matrix.name }} | |
name: codecov_bdist_${{ matrix.name }} | |
token: ${{ secrets.CODECOV_TOKEN }} |