Multiplatform Build and Test #333
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: Multiplatform Build & Test | |
env: | |
USE_EXISTING_BINARY_DATASET: 1 | |
on: | |
workflow_dispatch: | |
schedule: | |
- cron: "0 8 * * *" | |
jobs: | |
generate-binary-demo: | |
name: Generate Binary Dataset | |
runs-on: kuzu-self-hosted-testing | |
env: | |
NUM_THREADS: 32 | |
GEN: Ninja | |
CC: gcc | |
CXX: g++ | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Build | |
run: make release | |
- name: Generate Datasets | |
run: bash scripts/generate_binary_demo.sh | |
- name: Upload binary-demo | |
uses: actions/upload-artifact@v4 | |
with: | |
name: binary-demo | |
path: dataset/binary-demo | |
ubuntu-2004-build-test: | |
name: ubuntu-20.04 | |
runs-on: ubuntu-20.04 | |
needs: [generate-binary-demo] | |
defaults: | |
run: | |
shell: bash | |
env: | |
CC: gcc-11 | |
CXX: g++-11 | |
steps: | |
- uses: actions/checkout@v4 | |
continue-on-error: true | |
- name: Download binary-demo | |
uses: actions/download-artifact@v4 | |
with: | |
name: binary-demo | |
path: ${{ github.workspace }}/dataset/binary-demo | |
- name: Install packages | |
continue-on-error: true | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y build-essential manpages-dev software-properties-common | |
sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test | |
sudo apt-get update | |
sudo apt-get install -y gcc-11 g++-11 | |
- uses: actions/setup-python@v5 | |
continue-on-error: true | |
with: | |
python-version: "3.11" | |
- name: Ensure Python dependencies | |
continue-on-error: true | |
run: | | |
pip install torch~=2.0.0 --extra-index-url https://download.pytorch.org/whl/cpu | |
pip install --user -r tools/python_api/requirements_dev.txt -f https://data.pyg.org/whl/torch-2.0.0+cpu.html | |
- name: Ensure Node.js dependencies | |
continue-on-error: true | |
working-directory: tools/nodejs_api | |
run: npm install --include=dev | |
- name: Build | |
continue-on-error: true | |
run: | | |
make release NUM_THREADS=$(nproc) | |
echo "Build,$?" > status.txt | |
- name: Test | |
continue-on-error: true | |
run: | | |
make test NUM_THREADS=$(nproc) | |
echo "Test,$?" >> status.txt | |
- name: C and C++ examples | |
continue-on-error: true | |
run: | | |
make example NUM_THREADS=$(nproc) | |
echo "C and C++ examples,$?" >> status.txt | |
- name: Python test | |
continue-on-error: true | |
run: | | |
make pytest NUM_THREADS=$(nproc) | |
echo "Python test,$?" >> status.txt | |
- name: Node.js test | |
continue-on-error: true | |
run: | | |
make nodejstest NUM_THREADS=$(nproc) | |
echo "Node.js test,$?" >> status.txt | |
- name: Java test | |
continue-on-error: true | |
run: | | |
make javatest NUM_THREADS=$(nproc) | |
echo "Java test,$?" >> status.txt | |
- name: Rust share build | |
continue-on-error: true | |
run: echo $'[workspace]\nmembers = ["tools/rust_api","examples/rust"]' > Cargo.toml | |
- name: Rust set env | |
continue-on-error: true | |
run: echo "CARGO_BUILD_JOBS=$(nproc)" >> $GITHUB_ENV | |
- name: Rust test | |
continue-on-error: true | |
working-directory: tools/rust_api | |
run: | | |
cargo test --release --features arrow -- --test-threads=12 | |
echo "Rust test,$?" >> ../../status.txt | |
- name: Rust example | |
continue-on-error: true | |
working-directory: examples/rust | |
run: | | |
cargo build --release --features arrow | |
echo "Rust example,$?" >> ../../status.txt | |
- name: Rename status.txt | |
continue-on-error: true | |
run: mv status.txt ubuntu-20.04.csv | |
- uses: actions/upload-artifact@v4 | |
continue-on-error: true | |
with: | |
name: ubuntu-20.04 | |
path: ubuntu-20.04.csv | |
macos-build-test: | |
strategy: | |
matrix: | |
runner: [macos-13, macos-14] | |
fail-fast: false | |
name: ${{ matrix.runner }} | |
runs-on: ${{ matrix.runner }} | |
needs: [generate-binary-demo] | |
defaults: | |
run: | |
shell: bash | |
steps: | |
- uses: actions/checkout@v4 | |
continue-on-error: true | |
- name: Download binary-demo | |
uses: actions/download-artifact@v4 | |
with: | |
name: binary-demo | |
path: ${{ github.workspace }}/dataset/binary-demo | |
- uses: actions/setup-python@v4 | |
continue-on-error: true | |
with: | |
python-version: "3.10" | |
- name: Ensure Python dependencies | |
continue-on-error: true | |
run: | | |
pip install torch~=2.0.0 --extra-index-url https://download.pytorch.org/whl/cpu | |
pip install --user -r tools/python_api/requirements_dev.txt -f https://data.pyg.org/whl/torch-2.0.0+cpu.html | |
- name: Ensure Node.js dependencies | |
continue-on-error: true | |
working-directory: tools/nodejs_api | |
run: npm install --include=dev | |
- name: Build | |
continue-on-error: true | |
run: | | |
make release NUM_THREADS=$(sysctl -n hw.physicalcpu) | |
echo "Build,$?" > status.txt | |
- name: Test | |
continue-on-error: true | |
run: | | |
make test NUM_THREADS=$(sysctl -n hw.physicalcpu) | |
echo "Test,$?" >> status.txt | |
- name: C and C++ examples | |
continue-on-error: true | |
run: | | |
make example NUM_THREADS=$(sysctl -n hw.physicalcpu) | |
echo "C and C++ examples,$?" >> status.txt | |
- name: Python test | |
continue-on-error: true | |
run: | | |
make pytest NUM_THREADS=$(sysctl -n hw.physicalcpu) | |
echo "Python test,$?" >> status.txt | |
- name: Node.js test | |
continue-on-error: true | |
run: | | |
make nodejstest NUM_THREADS=$(sysctl -n hw.physicalcpu) | |
echo "Node.js test,$?" >> status.txt | |
- name: Java test | |
continue-on-error: true | |
run: | | |
make javatest NUM_THREADS=$(sysctl -n hw.physicalcpu) | |
echo "Java test,$?" >> status.txt | |
- name: Rust share build | |
continue-on-error: true | |
run: echo $'[workspace]\nmembers = ["tools/rust_api","examples/rust"]' > Cargo.toml | |
- name: Rust set env | |
continue-on-error: true | |
run: echo "CARGO_BUILD_JOBS=$(sysctl -n hw.physicalcpu)" >> $GITHUB_ENV | |
- name: Rust test | |
continue-on-error: true | |
working-directory: tools/rust_api | |
run: | | |
cargo test --release --features arrow -- --test-threads=12 | |
echo "Rust test,$?" >> ../../status.txt | |
- name: Rust example | |
continue-on-error: true | |
working-directory: examples/rust | |
run: | | |
cargo build --release --features arrow | |
echo "Rust example,$?" >> ../../status.txt | |
- name: Rename status.txt | |
continue-on-error: true | |
run: mv status.txt ${{ matrix.runner }}.csv | |
- uses: actions/upload-artifact@v4 | |
continue-on-error: true | |
with: | |
name: ${{ matrix.runner }} | |
path: ${{ matrix.runner }}.csv | |
windows-build-test: | |
strategy: | |
matrix: | |
runner: [windows-2019, windows-2022] | |
fail-fast: false | |
name: ${{ matrix.runner }} | |
needs: [generate-binary-demo] | |
runs-on: ${{ matrix.runner }} | |
steps: | |
- name: Disable Windows Defender | |
continue-on-error: true | |
shell: powershell | |
run: | | |
Set-MpPreference -DisableRealtimeMonitoring $true | |
Set-MpPreference -DisableBehaviorMonitoring $true | |
Set-MpPreference -DisableBlockAtFirstSeen $true | |
Set-MpPreference -DisableIOAVProtection $true | |
Set-MpPreference -DisablePrivacyMode $true | |
Set-MpPreference -SignatureDisableUpdateOnStartupWithoutEngine $true | |
Set-MpPreference -DisableArchiveScanning $true | |
Set-MpPreference -DisableIntrusionPreventionSystem $true | |
Set-MpPreference -DisableScriptScanning $true | |
Set-MpPreference -SubmitSamplesConsent NeverSend | |
- uses: actions/checkout@v4 | |
continue-on-error: true | |
- name: Download binary-demo | |
uses: actions/download-artifact@v4 | |
with: | |
name: binary-demo | |
path: ${{ github.workspace }}/dataset/binary-demo | |
- uses: ilammy/msvc-dev-cmd@v1 | |
continue-on-error: true | |
- uses: actions/setup-python@v4 | |
continue-on-error: true | |
with: | |
python-version: "3.10" | |
- name: Ensure Python dependencies | |
continue-on-error: true | |
shell: cmd | |
run: | | |
pip install torch~=2.0.0 --extra-index-url https://download.pytorch.org/whl/cpu | |
pip install --user -r tools\python_api\requirements_dev.txt -f https://data.pyg.org/whl/torch-2.0.0+cpu.html | |
- name: Ensure Node.js dependencies | |
continue-on-error: true | |
shell: cmd | |
working-directory: .\tools\nodejs_api | |
run: npm install --include=dev | |
- name: Build | |
continue-on-error: true | |
shell: cmd | |
run: | | |
make release NUM_THREADS=%NUMBER_OF_PROCESSORS% | |
echo Build,%ERRORLEVEL% > status.txt | |
- name: Test | |
continue-on-error: true | |
shell: cmd | |
run: | | |
make test NUM_THREADS=%NUMBER_OF_PROCESSORS% | |
echo Test,%ERRORLEVEL% >> status.txt | |
- name: C and C++ examples | |
continue-on-error: true | |
shell: cmd | |
run: | | |
make example NUM_THREADS=%NUMBER_OF_PROCESSORS% | |
echo C and C++ examples,%ERRORLEVEL% >> status.txt | |
- name: Python test | |
continue-on-error: true | |
shell: cmd | |
run: | | |
make pytest NUM_THREADS=%NUMBER_OF_PROCESSORS% | |
echo Python test,%ERRORLEVEL% >> status.txt | |
- name: Node.js test | |
continue-on-error: true | |
shell: cmd | |
run: | | |
make nodejstest NUM_THREADS=%NUMBER_OF_PROCESSORS% | |
echo Node.js test,%ERRORLEVEL% >> status.txt | |
- name: Java test | |
continue-on-error: true | |
shell: cmd | |
run: | | |
make javatest NUM_THREADS=%NUMBER_OF_PROCESSORS% | |
echo Java test,%ERRORLEVEL% >> status.txt | |
- name: Rust share build | |
continue-on-error: true | |
shell: cmd | |
run: (echo [workspace]& echo members = ["tools/rust_api","examples/rust"]) > Cargo.toml | |
- name: Rust test | |
continue-on-error: true | |
shell: cmd | |
run: | | |
make clean | |
set OPENSSL_DIR=C:\Program Files\OpenSSL-Win64 | |
set CXXFLAGS=/std:c++20 | |
set CARGO_BUILD_JOBS=%NUMBER_OF_PROCESSORS% | |
cargo test --release --features arrow -- --test-threads=12 | |
echo Rust test,%ERRORLEVEL% >> status.txt | |
- name: Rust example | |
continue-on-error: true | |
shell: cmd | |
run: | | |
set CARGO_BUILD_JOBS=%NUMBER_OF_PROCESSORS% | |
cargo build --release --features arrow | |
echo Rust example,%ERRORLEVEL% >> status.txt | |
- name: Rename status.txt | |
continue-on-error: true | |
shell: cmd | |
run: | | |
rename status.txt ${{ matrix.runner }}.csv | |
- uses: actions/upload-artifact@v4 | |
continue-on-error: true | |
with: | |
name: ${{ matrix.runner }} | |
path: ${{ matrix.runner }}.csv | |
debian-ubuntu-build-test: | |
strategy: | |
matrix: | |
image: ["ubuntu:23.04", "ubuntu:23.10", "debian:12", "debian:sid"] | |
fail-fast: false | |
name: ${{ matrix.image }} | |
needs: [generate-binary-demo] | |
runs-on: ubuntu-latest | |
container: | |
image: ${{ matrix.image }} | |
env: | |
CC: gcc | |
CXX: g++ | |
JAVA_HOME: /usr/lib/jvm/java-17-openjdk-amd64 | |
steps: | |
- name: Install packages | |
continue-on-error: true | |
run: | | |
apt-get update | |
apt-get install -y ca-certificates curl gnupg | |
mkdir -p /etc/apt/keyrings | |
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg | |
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list | |
apt-get update | |
apt-get install -y git build-essential cmake gcc g++ python3 python3-dev python3-pip openjdk-17-jdk nodejs | |
- uses: actions/checkout@v4 | |
continue-on-error: true | |
- name: Download binary-demo | |
uses: actions/download-artifact@v4 | |
with: | |
name: binary-demo | |
path: ${{ github.workspace }}/dataset/binary-demo | |
- name: Ensure Python dependencies | |
continue-on-error: true | |
run: | | |
pip install torch~=2.0.0 --extra-index-url https://download.pytorch.org/whl/cpu ${{ matrix.image != 'debian:11' && '--break-system-packages' || '' }} | |
pip install --user -r tools/python_api/requirements_dev.txt -f https://data.pyg.org/whl/torch-2.0.0+cpu.html ${{ matrix.image != 'debian:11' && '--break-system-packages' || '' }} | |
- name: Ensure Node.js dependencies | |
working-directory: tools/nodejs_api | |
continue-on-error: true | |
run: npm install --include=dev | |
- name: Install Rust | |
continue-on-error: true | |
run: | | |
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --no-update-default-toolchain | |
echo "$HOME/.cargo/bin" >> $GITHUB_PATH | |
$HOME/.cargo/bin/rustup toolchain install 1.76 | |
- name: Build | |
continue-on-error: true | |
run: | | |
make release NUM_THREADS=$(nproc) | |
echo "Build,$?" > status.txt | |
- name: Test | |
continue-on-error: true | |
run: | | |
make test NUM_THREADS=$(nproc) | |
echo "Test,$?" >> status.txt | |
- name: C and C++ examples | |
continue-on-error: true | |
run: | | |
make example NUM_THREADS=$(nproc) | |
echo "C and C++ examples,$?" >> status.txt | |
- name: Python test | |
continue-on-error: true | |
run: | | |
make pytest NUM_THREADS=$(nproc) | |
echo "Python test,$?" >> status.txt | |
- name: Node.js test | |
continue-on-error: true | |
run: | | |
make nodejstest NUM_THREADS=$(nproc) | |
echo "Node.js test,$?" >> status.txt | |
- name: Java test | |
continue-on-error: true | |
run: | | |
make javatest NUM_THREADS=$(nproc) | |
echo "Java test,$?" >> status.txt | |
- name: Rust share build | |
continue-on-error: true | |
run: echo '[workspace]\nmembers = ["tools/rust_api","examples/rust"]' > Cargo.toml | |
- name: Rust set env | |
continue-on-error: true | |
run: echo "CARGO_BUILD_JOBS=$(nproc)" >> $GITHUB_ENV | |
- name: Rust test | |
continue-on-error: true | |
working-directory: tools/rust_api | |
run: | | |
cargo test --release --features arrow -- --test-threads=12 | |
echo "Rust test,$?" >> ../../status.txt | |
- name: Rust example | |
continue-on-error: true | |
working-directory: examples/rust | |
run: | | |
cargo build --release --features arrow | |
echo "Rust example,$?" >> ../../status.txt | |
- name: Rename status.txt | |
continue-on-error: true | |
run: | | |
PLATFORM=$(echo ${{ matrix.image }} | tr ':' '-') | |
echo "PLATFORM=$PLATFORM" >> $GITHUB_ENV | |
mv status.txt $PLATFORM.csv | |
- uses: actions/upload-artifact@v4 | |
continue-on-error: true | |
with: | |
name: ${{env.PLATFORM}} | |
path: ${{env.PLATFORM}}.csv | |
rhel-fedora-build-test: | |
strategy: | |
matrix: | |
image: ["rockylinux:8", "rockylinux:9", "fedora:38", "fedora:39"] | |
fail-fast: false | |
name: ${{ matrix.image }} | |
needs: [generate-binary-demo] | |
runs-on: ubuntu-latest | |
container: | |
image: ${{ matrix.image }} | |
env: | |
CC: gcc | |
CXX: g++ | |
JAVA_HOME: /usr/lib/jvm/java-17-openjdk | |
HOME: /root | |
steps: | |
- name: Enable EPEL | |
continue-on-error: true | |
if: ${{ matrix.image == 'rockylinux:8' || matrix.image == 'rockylinux:9' }} | |
run: | | |
dnf update -y | |
dnf install -y epel-release | |
dnf update -y | |
- name: Enable SHA-1 on Rocky Linux 9 | |
continue-on-error: true | |
if: matrix.image == 'rockylinux:9' | |
run: update-crypto-policies --set LEGACY | |
- name: Install packages | |
continue-on-error: true | |
run: | | |
curl -fsSL https://rpm.nodesource.com/setup_20.x | bash - | |
dnf install -y git cmake ${{ matrix.image == 'rockylinux:8' && 'gcc-toolset-12 python3.11 python3.11-devel' || 'gcc gcc-c++ python3-devel' }} java-17-openjdk-devel nodejs | |
- name: Enable gcc-toolset-12 and python3.11 on Rocky Linux 8 | |
continue-on-error: true | |
if: matrix.image == 'rockylinux:8' | |
run: | | |
alternatives --set python /usr/bin/python3.11 | |
alternatives --set python3 /usr/bin/python3.11 | |
echo "PYTHON_EXECUTABLE=/usr/bin/python3.11" >> $GITHUB_ENV | |
echo "PYBIND11_PYTHON_VERSION=3.11" >> $GITHUB_ENV | |
source /opt/rh/gcc-toolset-12/enable | |
echo $PATH >> $GITHUB_PATH | |
- uses: actions/checkout@v4 | |
continue-on-error: true | |
- name: Download binary-demo | |
uses: actions/download-artifact@v4 | |
with: | |
name: binary-demo | |
path: ${{ github.workspace }}/dataset/binary-demo | |
- name: Ensure Python dependencies | |
continue-on-error: true | |
run: | | |
python3 -m venv /opt/venv | |
source /opt/venv/bin/activate | |
pip3 install torch~=2.2.1 --extra-index-url https://download.pytorch.org/whl/cpu | |
pip3 install -r tools/python_api/requirements_dev.txt -f https://data.pyg.org/whl/torch-2.2.1+cpu.html | |
- name: Ensure Node.js dependencies | |
continue-on-error: true | |
working-directory: tools/nodejs_api | |
run: npm install --include=dev | |
- name: Install Rust | |
continue-on-error: true | |
run: | | |
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --no-update-default-toolchain | |
echo "$HOME/.cargo/bin" >> $GITHUB_PATH | |
$HOME/.cargo/bin/rustup toolchain install 1.76 | |
- name: Build | |
continue-on-error: true | |
run: | | |
make release NUM_THREADS=$(nproc) | |
echo "Build,$?" > status.txt | |
- name: Test | |
continue-on-error: true | |
run: | | |
make test NUM_THREADS=$(nproc) | |
echo "Test,$?" >> status.txt | |
- name: C and C++ examples | |
continue-on-error: true | |
run: | | |
make example NUM_THREADS=$(nproc) | |
echo "C and C++ examples,$?" >> status.txt | |
- name: Python test | |
continue-on-error: true | |
run: | | |
source /opt/venv/bin/activate | |
make pytest NUM_THREADS=$(nproc) | |
echo "Python test,$?" >> status.txt | |
- name: Node.js test | |
continue-on-error: true | |
run: | | |
make nodejstest NUM_THREADS=$(nproc) | |
echo "Node.js test,$?" >> status.txt | |
- name: Java test | |
continue-on-error: true | |
run: | | |
make javatest NUM_THREADS=$(nproc) | |
echo "Java test,$?" >> status.txt | |
- name: Rust share build | |
continue-on-error: true | |
run: echo $'[workspace]\nmembers = ["tools/rust_api","examples/rust"]' > Cargo.toml | |
- name: Rust set env | |
continue-on-error: true | |
run: echo "CARGO_BUILD_JOBS=$(nproc)" >> $GITHUB_ENV | |
- name: Rust test | |
continue-on-error: true | |
working-directory: tools/rust_api | |
run: | | |
cargo test --release --features arrow -- --test-threads=12 | |
echo "Rust test,$?" >> ../../status.txt | |
- name: Rust example | |
continue-on-error: true | |
working-directory: examples/rust | |
run: | | |
cargo build --release --features arrow | |
echo "Rust example,$?" >> ../../status.txt | |
- name: Rename status.txt | |
continue-on-error: true | |
run: | | |
PLATFORM=$(echo ${{ matrix.image }} | tr ':' '-') | |
echo "PLATFORM=$PLATFORM" >> $GITHUB_ENV | |
mv status.txt $PLATFORM.csv | |
- uses: actions/upload-artifact@v4 | |
continue-on-error: true | |
with: | |
name: ${{env.PLATFORM}} | |
path: ${{env.PLATFORM}}.csv | |
archlinux-build-test: | |
name: archlinux | |
runs-on: ubuntu-latest | |
needs: [generate-binary-demo] | |
container: | |
image: archlinux:latest | |
env: | |
CC: gcc | |
CXX: g++ | |
JAVA_HOME: /usr/lib/jvm/java-17-openjdk | |
steps: | |
- name: Install packages | |
continue-on-error: true | |
run: | | |
pacman -Syu --noconfirm | |
pacman -S --needed --noconfirm git base-devel cmake gcc python python-pip npm jdk17-openjdk | |
- uses: actions/checkout@v4 | |
continue-on-error: true | |
- name: Download binary-demo | |
uses: actions/download-artifact@v4 | |
with: | |
name: binary-demo | |
path: ${{ github.workspace }}/dataset/binary-demo | |
- name: Ensure Python dependencies | |
continue-on-error: true | |
run: | | |
pip install torch~=2.0.0 --extra-index-url https://download.pytorch.org/whl/cpu --break-system-packages | |
pip install --user -r tools/python_api/requirements_dev.txt -f https://data.pyg.org/whl/torch-2.0.0+cpu.html --break-system-packages | |
- name: Ensure Node.js dependencies | |
continue-on-error: true | |
working-directory: tools/nodejs_api | |
run: npm install --include=dev | |
- name: Install Rust | |
continue-on-error: true | |
run: | | |
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --no-update-default-toolchain | |
echo "$HOME/.cargo/bin" >> $GITHUB_PATH | |
$HOME/.cargo/bin/rustup toolchain install 1.76 | |
- name: Build | |
continue-on-error: true | |
run: | | |
make release NUM_THREADS=$(nproc) | |
echo "Build,$?" > status.txt | |
- name: Test | |
continue-on-error: true | |
run: | | |
make test NUM_THREADS=$(nproc) | |
echo "Test,$?" >> status.txt | |
- name: C and C++ examples | |
continue-on-error: true | |
run: | | |
make example NUM_THREADS=$(nproc) | |
echo "C and C++ examples,$?" >> status.txt | |
- name: Python test | |
continue-on-error: true | |
run: | | |
make pytest NUM_THREADS=$(nproc) | |
echo "Python test,$?" >> status.txt | |
- name: Node.js test | |
continue-on-error: true | |
run: | | |
make nodejstest NUM_THREADS=$(nproc) | |
echo "Node.js test,$?" >> status.txt | |
- name: Java test | |
continue-on-error: true | |
run: | | |
make javatest NUM_THREADS=$(nproc) | |
echo "Java test,$?" >> status.txt | |
- name: Rust share build | |
continue-on-error: true | |
run: echo $'[workspace]\nmembers = ["tools/rust_api","examples/rust"]' > Cargo.toml | |
- name: Rust set env | |
continue-on-error: true | |
run: echo "CARGO_BUILD_JOBS=$(nproc)" >> $GITHUB_ENV | |
- name: Rust test | |
working-directory: tools/rust_api | |
continue-on-error: true | |
run: | | |
cargo test --release --features arrow -- --test-threads=12 | |
echo "Rust test,$?" >> ../../status.txt | |
- name: Rust example | |
working-directory: examples/rust | |
continue-on-error: true | |
run: | | |
cargo build --release --features arrow | |
echo "Rust example,$?" >> ../../status.txt | |
- name: Rename status.txt | |
continue-on-error: true | |
run: | | |
mv status.txt archlinux.csv | |
- uses: actions/upload-artifact@v4 | |
continue-on-error: true | |
with: | |
name: archlinux | |
path: archlinux.csv | |
collect-results: | |
runs-on: ubuntu-latest | |
env: | |
DISCORD_CHANNEL_ID: ${{ secrets.DISCORD_CHANNEL_ID }} | |
DISCORD_BOT_TOKEN: ${{ secrets.DISCORD_BOT_TOKEN }} | |
GITHUB_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} | |
needs: | |
[ | |
ubuntu-2004-build-test, | |
macos-build-test, | |
windows-build-test, | |
debian-ubuntu-build-test, | |
rhel-fedora-build-test, | |
archlinux-build-test, | |
] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Download artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
path: results | |
- name: List artifacts | |
run: ls -R results | |
- name: Create summary | |
run: | | |
pip3 install pandas tabulate discord.py | |
python3 scripts/multiplatform-test-helper/collect-results.py results | |
python3 scripts/multiplatform-test-helper/notify-discord.py results.json | |
- name: Upload summary | |
uses: actions/upload-artifact@v4 | |
with: | |
name: results | |
path: results.md |