Skip to content

add pk-actions as a branch to build #1

add pk-actions as a branch to build

add pk-actions as a branch to build #1

Workflow file for this run

name: CI
on:
push:
branches:
- develop
- pk-actions
schedule:
- cron: "0 12 * * *"
env:
python_bld_ver: 3.9
ubuntu_bld: ubuntu-20.04
mac_bld: macOS-13
windows_bld: windows-2022
ubuntu_test: ubuntu-latest
mac_test: macOS-latest
windows_test: windows-latest
skipComponentGovernanceDetection: true
skipSCA: true
skipNugetSecurityAnalysis: true
runCodesignValidationInjection: false
Codeql_SkipTaskAutoInjection: true
jobs:
bld:
strategy:
matrix:
include:
- name: linux_release_64
image: ${{ env.ubuntu_bld }}

Check failure on line 31 in .github/workflows/ci.yml

View workflow run for this annotation

GitHub Actions / CI

Invalid workflow file

The workflow is not valid. .github/workflows/ci.yml (Line: 31, Col: 20): Unrecognized named-value: 'env'. Located at position 1 within expression: env.ubuntu_bld .github/workflows/ci.yml (Line: 36, Col: 20): Unrecognized named-value: 'env'. Located at position 1 within expression: env.ubuntu_bld
asm: "-asm"
options: "-release_64"
artifact_name: "libebm_ubuntu_release_64"
- name: linux_debug_64
image: ${{ env.ubuntu_bld }}
asm: ""
options: "-debug_64"
artifact_name: "libebm_ubuntu_debug_64"
- name: mac_release_64
image: ${{ env.mac_bld }}
asm: "-asm"
options: "-release_64"
artifact_name: "libebm_mac_release_64"
- name: mac_debug_64
image: ${{ env.mac_bld }}
asm: ""
options: "-debug_64"
artifact_name: "libebm_mac_debug_64"
- name: mac_release_arm
image: macOS-13-arm64
asm: "-asm"
options: "-release_arm"
artifact_name: "libebm_mac_release_arm"
- name: mac_debug_arm
image: macOS-13-arm64
asm: ""
options: "-debug_arm"
artifact_name: "libebm_mac_debug_arm"
- name: win_release_64
image: ${{ env.windows_bld }}
asm: ""
options: "-release_64"
artifact_name: "libebm_win_release_64"
- name: win_debug_64
image: ${{ env.windows_bld }}
asm: ""
options: "-debug_64"
artifact_name: "libebm_win_debug_64"
runs-on: ${{ matrix.image }}
steps:
- name: Check out repository
uses: actions/checkout@v2
- name: Download CUDA installer
if: startsWith(matrix.image, 'windows')
run: |
curl -O https://developer.download.nvidia.com/compute/cuda/11.2.2/network_installers/cuda_11.2.2_win10_network.exe
- name: Build on Windows
if: startsWith(matrix.image, 'windows')
run: |
SET PATH=%PATH%;C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Current\Bin\
SET CudaToolkitDir=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2
cuda_11.2.2_win10_network.exe -s nvcc_11.2 visual_studio_integration_11.2 cudart_11.2
IF ERRORLEVEL 1 (
ECHO cuda_11.2.2_win10_network.exe FAILED
EXIT /B 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 native shared library
uses: actions/upload-artifact@v2
with:
name: ${{ matrix.artifact_name }}
path: bld/lib
- name: Publish assembly x64
if: ${{ matrix.asm != '' }}
uses: actions/upload-artifact@v2
with:
name: asm-${{ matrix.artifact_name }}
path: bld/asm/
vis:
runs-on: ${{ env.ubuntu_bld }}
steps:
- name: Check out repository
uses: actions/checkout@v2
- name: Build vis
run: |
cd shared/vis
npm install
npm run build-prod
- name: Publish interpret-inline.js library
uses: actions/upload-artifact@v2
with:
name: vis
path: shared/vis/dist
npm:
runs-on: ${{ env.ubuntu_bld }}
steps:
- name: Check out repository
uses: actions/checkout@v2
- 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@v2
with:
name: npm
path: shared/vis/pkg
R:
runs-on: ${{ env.ubuntu_bld }}
steps:
- name: Check out repository
uses: actions/checkout@v2
- name: Build R package
run: |
cd R
sudo apt --yes update
sudo apt --yes install texlive-latex-base texlive-fonts-extra
Rscript build.R
- name: Display errors
if: failure()
run: cat bld/tmp/R/interpret.Rcheck/00install.out
- name: Publish R package
uses: actions/upload-artifact@v2
with:
name: R
path: bld/R
sdist:
runs-on: ${{ env.ubuntu_bld }}
steps:
- name: Check out repository
uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: ${{ env.python_bld_ver }}
- 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@v2
with:
name: sdist
path: bld/sdist
docs:
runs-on: ${{ env.ubuntu_bld }}
needs: sdist
steps:
- name: Check out repository
uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: ${{ env.python_bld_ver }}
- name: Download sdist
uses: actions/download-artifact@v2
with:
name: sdist
path: $(System.ArtifactsDirectory)/sdist
- name: Build docs
run: |
cd "$(System.ArtifactsDirectory)/sdist"
tarball_path=$(echo interpret_core-*.tar.gz)
python -m pip install --upgrade pip setuptools wheel
python -m pip install "$tarball_path"[debug,notebook,plotly,lime,sensitivity,shap,linear,treeinterpreter,aplr,dash,skoperules,testing]
cd "$(Build.SourcesDirectory)/docs/"
pip install -r requirements.txt
/bin/sh ./build.sh
continue-on-error: true
- name: Publish docs
uses: actions/upload-artifact@v2
with:
name: docs
path: docs/interpret/_build/html/
bdist:
runs-on: ${{ env.ubuntu_bld }}
needs: [bld, vis]
steps:
- name: Check out repository
uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: ${{ env.python_bld_ver }}
- name: Download artifact lib files
uses: actions/download-artifact@v2
with:
name: lib
path: $(System.ArtifactsDirectory)/lib/
- name: Flatten and copy lib files
run: |
cp $(System.ArtifactsDirectory)/lib/* 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@v2
with:
name: bdist
path: bld/bdist
testC:
needs: bld
strategy:
matrix:
include:
- name: linux_release_64
image: ${{ env.ubuntu_test }}
options: "-release_64 -existing_release_64"
scheduled: "-valgrind"
artifact_name: "libebm_ubuntu_release_64"
- name: linux_debug_64
image: ${{ env.ubuntu_test }}
options: "-debug_64 -existing_debug_64"
scheduled: "-valgrind"
artifact_name: "libebm_ubuntu_debug_64"
- name: linux_release_32
image: ${{ env.ubuntu_test }}
options: "-release_32"
scheduled: "-valgrind"
artifact_name: ""
- name: linux_debug_32
image: ${{ env.ubuntu_test }}
options: "-debug_32"
scheduled: "-valgrind"
artifact_name: ""
- name: mac_release_64
image: ${{ env.mac_test }}
options: "-release_64 -existing_release_64"
scheduled: ""
artifact_name: "libebm_mac_release_64"
- name: mac_debug_64
image: ${{ env.mac_test }}
options: "-debug_64 -asan"
scheduled: ""
artifact_name: ""
- name: win_release_64
image: ${{ env.windows_test }}
options: "-release_64 -existing_release_64"
scheduled: "-analysis"
artifact_name: "libebm_win_release_64"
- name: win_debug_64
image: ${{ env.windows_test }}
options: "-debug_64 -existing_debug_64"
scheduled: ""
artifact_name: "libebm_win_debug_64"
- name: win_release_32
image: ${{ env.windows_test }}
options: "-release_32"
scheduled: "-analysis"
artifact_name: ""
- name: win_debug_32
image: ${{ env.windows_test }}
options: "-debug_32"
scheduled: ""
artifact_name: ""
runs-on: ${{ matrix.image }}
steps:
- name: Check out repository
uses: actions/checkout@v2
- name: Copy native library to bld/lib directory
if: ${{ matrix.artifact_name != '' }}
uses: actions/download-artifact@v2
with:
name: ${{ matrix.artifact_name }}
path: bld/lib
- name: Download CUDA installer
if: startsWith(matrix.image, 'windows')
run: |
curl -O https://developer.download.nvidia.com/compute/cuda/11.2.2/network_installers/cuda_11.2.2_win10_network.exe
- name: Test on macOS
if: startsWith(matrix.image, 'macOS')
run: |
/bin/sh ./shared/libebm/tests/libebm_test.sh ${{ matrix.options }}
- name: Test on Linux (CI)
if: and(startsWith(matrix.image, 'ubuntu'), ne(env.BUILD_REASON, 'Schedule'))
run: |
/bin/sh ./shared/libebm/tests/libebm_test.sh ${{ matrix.options }}
- name: Test on Linux (Schedule)
if: and(startsWith(matrix.image, 'ubuntu'), eq(env.BUILD_REASON, 'Schedule'))
run: |
/bin/sh ./shared/libebm/tests/libebm_test.sh ${{ matrix.options }} ${{ matrix.scheduled }}
- name: Test on Windows (CI)
if: and(startsWith(matrix.image, 'windows'), ne(env.BUILD_REASON, 'Schedule'))
run: |
SET PATH=%PATH%;C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Current\Bin\
SET CudaToolkitDir=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2
cuda_11.2.2_win10_network.exe -s nvcc_11.2 visual_studio_integration_11.2 cudart_11.2
IF ERRORLEVEL 1 (
ECHO cuda_11.2.2_win10_network.exe FAILED
EXIT /B 201
)
.\shared\libebm\tests\libebm_test.bat ${{ matrix.options }}
- name: Test on Windows (Schedule)
if: and(startsWith(matrix.image, 'windows'), eq(env.BUILD_REASON, 'Schedule'))
run: |
SET PATH=%PATH%;C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Current\Bin\
SET CudaToolkitDir=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2
cuda_11.2.2_win10_network.exe -s nvcc_11.2 visual_studio_integration_11.2 cudart_11.2
IF ERRORLEVEL 1 (
ECHO cuda_11.2.2_win10_network.exe FAILED
EXIT /B 201
)
.\shared\libebm\tests\libebm_test.bat ${{ matrix.options }} ${{ matrix.scheduled }}
testS:
needs: sdist
strategy:
matrix:
include:
- name: linux_39_python
python_version: 3.9
image: ${{ env.ubuntu_test }}
- name: linux_310_python
python_version: 3.10
image: ${{ env.ubuntu_test }}
- name: linux_311_python
python_version: 3.11
image: ${{ env.ubuntu_test }}
- name: linux_312_python
python_version: 3.12
image: ${{ env.ubuntu_test }}
- name: win_39_python
python_version: 3.9
image: ${{ env.windows_test }}
- name: win_310_python
python_version: 3.10
image: ${{ env.windows_test }}
- name: win_311_python
python_version: 3.11
image: ${{ env.windows_test }}
- name: win_312_python
python_version: 3.12
image: ${{ env.windows_test }}
- name: mac_39_python
python_version: 3.9
image: ${{ env.mac_test }}
- name: mac_310_python
python_version: 3.10
image: ${{ env.mac_test }}
- name: mac_311_python
python_version: 3.11
image: ${{ env.mac_test }}
- name: mac_312_python
python_version: 3.12
image: ${{ env.mac_test }}
runs-on: ${{ matrix.image }}
steps:
- name: Check out repository
uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python_version }}
- name: Download sdist
uses: actions/download-artifact@v2
with:
name: sdist
path: $(System.ArtifactsDirectory)/sdist
- name: Install and run tests (Windows)
if: startsWith(matrix.image, 'windows')
run: |
python -m pip install --upgrade pip setuptools wheel
FOR %%A IN ("$(System.ArtifactsDirectory)\sdist\interpret_core-*.tar.gz") DO SET "install_file=%%~nA"
REM the above line got "interpret_core-x.x.x.tar" and we now need to strip the ".tar"
FOR %%A IN ("%install_file%") DO SET "install_file=%%~nA"
SET PATH=%PATH%;C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Current\Bin\
python -m pip install "$(System.ArtifactsDirectory)\sdist\%install_file%.tar.gz"[debug,notebook,plotly,lime,sensitivity,shap,linear,treeinterpreter,aplr,dash,skoperules,testing]
mkdir "$(Agent.TempDirectory)\zqmr"
mkdir "$(Agent.TempDirectory)\zqmr\t"
tar -xzvf "$(System.ArtifactsDirectory)\sdist\%install_file%.tar.gz" -C "$(Agent.TempDirectory)\zqmr\t" "%install_file%/tests"
cd /D "$(Agent.TempDirectory)\zqmr\t"
set PATH=%PATH%;%GeckoWebDriver%
python -m pytest -vv -n auto --junitxml=junit/test-results.xml --cov=interpret --cov-report=xml --cov-report=html
- name: Install and run tests (non-Windows)
if: not(startsWith(matrix.image, 'windows'))
run: |
python -m pip install --upgrade pip setuptools wheel
cd "$(System.ArtifactsDirectory)/sdist"
install_file=$(echo interpret_core-*.tar.gz)
install_file=${install_file%.tar.gz}
python -m pip install "$(System.ArtifactsDirectory)/sdist/$install_file.tar.gz"[debug,notebook,plotly,lime,sensitivity,shap,linear,treeinterpreter,aplr,dash,skoperules,testing]
mkdir -p "$(Agent.TempDirectory)/zqmr/t"
tar -xzvf "$(System.ArtifactsDirectory)/sdist/$install_file.tar.gz" -C "$(Agent.TempDirectory)/zqmr/t" "$install_file/tests"
cd "$(Agent.TempDirectory)/zqmr/t"
python -m pytest -vv -n auto --junitxml=junit/test-results.xml --cov=interpret --cov-report=xml --cov-report=html
- name: Publish test results
uses: actions/upload-artifact@v2
if: always()
with:
name: test-results
path: "$(Agent.TempDirectory)/zqmr/t/junit/test-results.xml"
- name: Publish test coverage results
if: startsWith(matrix.image, 'windows')
uses: actions/upload-artifact@v2
with:
name: coverage-report
path: "$(Agent.TempDirectory)/zqmr/t/coverage.xml"
testB:
needs: bdist
strategy:
matrix:
include:
- name: linux_39_python
python_version: 3.9
image: ${{ env.ubuntu_test }}
- name: linux_310_python
python_version: 3.10
image: ${{ env.ubuntu_test }}
- name: linux_311_python
python_version: 3.11
image: ${{ env.ubuntu_test }}
- name: linux_312_python
python_version: 3.12
image: ${{ env.ubuntu_test }}
- name: win_39_python
python_version: 3.9
image: ${{ env.windows_test }}
- name: win_310_python
python_version: 3.10
image: ${{ env.windows_test }}
- name: win_311_python
python_version: 3.11
image: ${{ env.windows_test }}
- name: win_312_python
python_version: 3.12
image: ${{ env.windows_test }}
- name: mac_39_python
python_version: 3.9
image: ${{ env.mac_test }}
- name: mac_310_python
python_version: 3.10
image: ${{ env.mac_test }}
- name: mac_311_python
python_version: 3.11
image: ${{ env.mac_test }}
- name: mac_312_python
python_version: 3.12
image: ${{ env.mac_test }}
runs-on: ${{ matrix.image }}
steps:
- name: Check out repository
uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python_version }}
- name: Download bdist
uses: actions/download-artifact@v2
with:
name: bdist
path: $(System.ArtifactsDirectory)/bdist
- name: Install and run tests (Windows)
if: startsWith(matrix.image, 'windows')
run: |
python -m pip install --upgrade pip setuptools wheel
FOR %%A IN ("$(System.ArtifactsDirectory)\bdist\interpret_core-*.whl") DO SET "install_file=%%A"
python -m pip install "%install_file%"[debug,notebook,plotly,lime,sensitivity,shap,linear,treeinterpreter,aplr,dash,skoperules,testing]
mkdir "$(Agent.TempDirectory)\zqmr"
mkdir "$(Agent.TempDirectory)\zqmr\t"
xcopy /E "$(Build.SourcesDirectory)\python\interpret-core\tests\*" "$(Agent.TempDirectory)\zqmr\t\"
cd /D "$(Agent.TempDirectory)\zqmr\t"
python -m pytest -vv -n auto --junitxml=junit/test-results.xml --cov=interpret --cov-report=xml --cov-report=html
- name: Install and run tests (non-Windows)
if: not(startsWith(matrix.image, 'windows'))
run: |
python -m pip install --upgrade pip setuptools wheel
cd "$(System.ArtifactsDirectory)/bdist"
install_file=$(echo interpret_core-*.whl)
python -m pip install "$install_file"[debug,notebook,plotly,lime,sensitivity,shap,linear,treeinterpreter,aplr,dash,skoperules,testing]
mkdir -p "$(Agent.TempDirectory)/zqmr/t"
cp -r "$(Build.SourcesDirectory)/python/interpret-core/tests/" "$(Agent.TempDirectory)/zqmr/t/"
cd "$(Agent.TempDirectory)/zqmr/t"
python -m pytest -vv -n auto --junitxml=junit/test-results.xml --cov=interpret --cov-report=xml --cov-report=html
- name: Publish test results
uses: actions/upload-artifact@v2
if: always()
with:
name: test-results
path: "$(Agent.TempDirectory)/zqmr/t/junit/test-results.xml"
- name: Publish test coverage results
if: startsWith(matrix.image, 'windows')
uses: actions/upload-artifact@v2
with:
name: coverage-report
path: "$(Agent.TempDirectory)/zqmr/t/coverage.xml"
clang_format:
needs: [testC, testS, testB]
runs-on: ${{ env.ubuntu_bld }}
steps:
- name: Check out repository
uses: actions/checkout@v2
- name: Check C++ code formatting with clang-format
run: |
echo "deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-16 main" | sudo tee /etc/apt/sources.list.d/llvm-toolchain-jammy-16.list
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/llvm-archive-keyring.gpg
sudo apt --yes update
sudo apt --yes install clang-format-16
find shared/libebm \( -iname "*.cpp" -o -iname "*.h" -o -iname "*.hpp" \) | xargs clang-format-16 -i -style=file
git diff --exit-code
continue-on-error: true
format_black:
needs: [testC, testS, testB]
runs-on: ${{ env.ubuntu_bld }}
steps:
- name: Check out repository
uses: actions/checkout@v2
- name: black python formatting check
run: |
cd python/interpret-core
python -m pip install --upgrade black
black --check .
continue-on-error: true
- name: Publish source codes
uses: actions/upload-artifact@v2
with:
name: source_codes
path: $(Build.SourcesDirectory)