Multiplatform Build and Test #54
This file contains hidden or 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 and Test | |
| env: | |
| WERROR: 1 | |
| BUILD_TYPE: Release | |
| GEN: Ninja | |
| on: | |
| workflow_dispatch: | |
| schedule: | |
| - cron: "0 8 * * *" | |
| jobs: | |
| # Generate the binary db once to test that it can be read on all platforms. | |
| generate-binary-demo: | |
| 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 | |
| macos-build-test: | |
| strategy: | |
| matrix: | |
| runner: [ macos-14, macos-15 ] | |
| 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.11" | |
| - name: Determine NUM_THREADS | |
| run: | | |
| export NUM_THREADS=$(sysctl -n hw.physicalcpu) | |
| echo "NUM_THREADS=$NUM_THREADS" >> $GITHUB_ENV | |
| echo "TEST_JOBS=$NUM_THREADS" >> $GITHUB_ENV | |
| echo "CARGO_BUILD_JOBS=$NUM_THREADS" >> $GITHUB_ENV | |
| echo "NUM_THREADS=$NUM_THREADS" | |
| - name: Test | |
| continue-on-error: true | |
| run: | | |
| set +e | |
| make test | |
| echo "Test,$?" >> status.txt | |
| make clean | |
| - name: Build | |
| continue-on-error: true | |
| run: | | |
| set +e | |
| make release | |
| echo "Build,$?" >> status.txt | |
| - name: C and C++ examples | |
| continue-on-error: true | |
| run: | | |
| set +e | |
| make example | |
| echo "C and C++ examples,$?" >> status.txt | |
| - name: Python test | |
| continue-on-error: true | |
| run: | | |
| set +e | |
| make pytest-venv | |
| echo "Python test,$?" >> status.txt | |
| - name: Node.js test | |
| continue-on-error: true | |
| run: | | |
| node --version | |
| npm --version | |
| set +e | |
| make nodejstest-deps | |
| echo "Node.js test,$?" >> status.txt | |
| - name: Java test | |
| continue-on-error: true | |
| run: | | |
| java --version | |
| set +e | |
| make javatest | |
| echo "Java test,$?" >> status.txt | |
| - name: Cleanup | |
| continue-on-error: true | |
| run: make clean | |
| - name: Rust share build | |
| continue-on-error: true | |
| run: echo $'[workspace]\nmembers = ["tools/rust_api","examples/rust"]\nresolver = "2"' > Cargo.toml | |
| - name: Rust test | |
| continue-on-error: true | |
| working-directory: tools/rust_api | |
| run: | | |
| cargo --version | |
| set +e | |
| cargo test --release --features arrow | |
| echo "Rust test,$?" >> ../../status.txt | |
| - name: Rust example | |
| continue-on-error: true | |
| working-directory: examples/rust | |
| run: | | |
| set +e | |
| cargo build --release --features arrow | |
| echo "Rust example,$?" >> ../../status.txt | |
| - name: Rename status.txt | |
| if: ${{ always() }} | |
| run: | | |
| cat status.txt | |
| mv status.txt ${{ matrix.runner }}.csv | |
| - uses: actions/upload-artifact@v4 | |
| if: ${{ always() }} | |
| with: | |
| name: ${{ matrix.runner }} | |
| path: ${{ matrix.runner }}.csv | |
| windows-build-test: | |
| strategy: | |
| matrix: | |
| runner: [ windows-2022, windows-2025 ] | |
| fail-fast: false | |
| name: ${{ matrix.runner }} | |
| needs: [ generate-binary-demo ] | |
| runs-on: ${{ matrix.runner }} | |
| env: | |
| WERROR: 0 | |
| 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: ilammy/msvc-dev-cmd@v1 | |
| continue-on-error: true | |
| - 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.11" | |
| - name: Determine NUM_THREADS | |
| shell: powershell | |
| run: | | |
| $numThreads = $env:NUMBER_OF_PROCESSORS | |
| "NUM_THREADS=$numThreads" >> $env:GITHUB_ENV | |
| "TEST_JOBS=$numThreads" >> $env:GITHUB_ENV | |
| "CARGO_BUILD_JOBS=$numThreads" >> $env:GITHUB_ENV | |
| Write-Host "NUMBER_OF_PROCESSORS=$numThreads" | |
| - name: Test | |
| continue-on-error: true | |
| shell: cmd | |
| run: | | |
| make test | |
| echo Test,%ERRORLEVEL% >> status.txt | |
| make clean | |
| - name: Build | |
| continue-on-error: true | |
| shell: cmd | |
| run: | | |
| make release | |
| echo Build,%ERRORLEVEL% >> status.txt | |
| - name: C and C++ examples | |
| continue-on-error: true | |
| shell: cmd | |
| run: | | |
| make example | |
| echo C and C++ examples,%ERRORLEVEL% >> status.txt | |
| - name: Python test | |
| continue-on-error: true | |
| shell: cmd | |
| run: | | |
| make pytest-venv | |
| echo Python test,%ERRORLEVEL% >> status.txt | |
| - name: Node.js test | |
| continue-on-error: true | |
| shell: cmd | |
| run: | | |
| make nodejstest-deps | |
| echo Node.js test,%ERRORLEVEL% >> status.txt | |
| - name: Set up JDK 11 | |
| continue-on-error: true | |
| if: ${{ matrix.runner == 'windows-2022' }} | |
| uses: actions/setup-java@v3 | |
| with: | |
| java-version: '11' | |
| distribution: 'temurin' | |
| - name: Java test | |
| continue-on-error: true | |
| shell: cmd | |
| run: | | |
| java --version | |
| make javatest | |
| echo Java test,%ERRORLEVEL% >> status.txt | |
| - name: Cleanup | |
| shell: cmd | |
| continue-on-error: true | |
| run: make clean | |
| - name: Rust share build | |
| continue-on-error: true | |
| shell: cmd | |
| run: (echo [workspace]& echo members = ["tools/rust_api","examples/rust"]& echo resolver = "2") > Cargo.toml | |
| - name: Rust test | |
| continue-on-error: true | |
| shell: cmd | |
| run: | | |
| cargo --version | |
| set OPENSSL_DIR=C:\Program Files\OpenSSL-Win64 | |
| set CXXFLAGS=/std:c++20 | |
| cargo test --release --features arrow | |
| echo Rust test,%ERRORLEVEL% >> status.txt | |
| - name: Rust example | |
| continue-on-error: true | |
| shell: cmd | |
| run: | | |
| set OPENSSL_DIR=C:\Program Files\OpenSSL-Win64 | |
| set CXXFLAGS=/std:c++20 | |
| cargo build --release --features arrow | |
| echo Rust example,%ERRORLEVEL% >> status.txt | |
| - name: Rename status.txt | |
| if: ${{ always() }} | |
| shell: cmd | |
| run: | | |
| cat status.txt | |
| rename status.txt ${{ matrix.runner }}.csv | |
| - uses: actions/upload-artifact@v4 | |
| if: ${{ always() }} | |
| with: | |
| name: ${{ matrix.runner }} | |
| path: ${{ matrix.runner }}.csv | |
| debian-ubuntu-build-test: | |
| strategy: | |
| matrix: | |
| image: [ "ubuntu:22.04", "ubuntu:24.04", "ubuntu:25.04", "debian:12", "debian:sid" ] | |
| fail-fast: false | |
| name: ${{ matrix.image }} | |
| needs: [ generate-binary-demo ] | |
| runs-on: ubuntu-24.04 | |
| container: | |
| image: ${{ matrix.image }} | |
| env: | |
| CC: gcc | |
| CXX: g++ | |
| JAVA_HOME: /usr/lib/jvm/java-17-openjdk-amd64 | |
| steps: | |
| - name: Setup Node.js repo | |
| if: ${{ matrix.image != 'debian:sid' && matrix.image != 'ubuntu:25.04' }} | |
| 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 | |
| - name: Install packages | |
| continue-on-error: true | |
| run: | | |
| apt-get update | |
| apt-get install -y git build-essential cmake ninja-build python3 python3-dev python3-venv openjdk-17-jdk ca-certificates curl gnupg ${{ matrix.image == 'ubuntu:22.04' && 'gcc-12 g++-12' || 'gcc g++' }} ${{ (matrix.image == 'debian:sid' || matrix.image == 'ubuntu:25.04') && 'nodejs npm' || 'nodejs' }} | |
| - name: Setup gcc 12 | |
| if: ${{ matrix.image == 'ubuntu:22.04' }} | |
| continue-on-error: true | |
| run: | | |
| update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 100 | |
| update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-12 100 | |
| - 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: Determine NUM_THREADS | |
| run: | | |
| export NUM_THREADS=$(nproc) | |
| echo "NUM_THREADS=$NUM_THREADS" >> $GITHUB_ENV | |
| echo "TEST_JOBS=$NUM_THREADS" >> $GITHUB_ENV | |
| echo "CARGO_BUILD_JOBS=$NUM_THREADS" >> $GITHUB_ENV | |
| echo "NUM_THREADS=$NUM_THREADS" | |
| - name: Test | |
| continue-on-error: true | |
| run: | | |
| set +e | |
| make test | |
| echo "Test,$?" >> status.txt | |
| make clean | |
| - name: Build | |
| continue-on-error: true | |
| run: | | |
| set +e | |
| make release | |
| echo "Build,$?" >> status.txt | |
| - name: C and C++ examples | |
| continue-on-error: true | |
| run: | | |
| set +e | |
| make example | |
| echo "C and C++ examples,$?" >> status.txt | |
| - name: Python test | |
| continue-on-error: true | |
| run: | | |
| set +e | |
| make pytest-venv | |
| echo "Python test,$?" >> status.txt | |
| - name: Node.js test | |
| continue-on-error: true | |
| run: | | |
| node --version | |
| npm --version | |
| set +e | |
| make nodejstest-deps | |
| echo "Node.js test,$?" >> status.txt | |
| - name: Java test | |
| continue-on-error: true | |
| run: | | |
| java --version | |
| set +e | |
| make javatest | |
| echo "Java test,$?" >> status.txt | |
| - name: Cleanup | |
| continue-on-error: true | |
| run: make clean | |
| - 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.81 | |
| - name: Rust share build | |
| continue-on-error: true | |
| run: echo '[workspace]\nmembers = ["tools/rust_api","examples/rust"]\nresolver = "2"' > Cargo.toml | |
| - name: Rust test | |
| continue-on-error: true | |
| working-directory: tools/rust_api | |
| run: | | |
| cargo --version | |
| set +e | |
| cargo test --release --features arrow | |
| echo "Rust test,$?" >> ../../status.txt | |
| - name: Rust example | |
| continue-on-error: true | |
| working-directory: examples/rust | |
| run: | | |
| set +e | |
| cargo build --release --features arrow | |
| echo "Rust example,$?" >> ../../status.txt | |
| - name: Rename status.txt | |
| if: ${{ always() }} | |
| run: | | |
| cat status.txt | |
| PLATFORM=$(echo ${{ matrix.image }} | tr ':' '-') | |
| echo "PLATFORM=$PLATFORM" >> $GITHUB_ENV | |
| mv status.txt $PLATFORM.csv | |
| - uses: actions/upload-artifact@v4 | |
| if: ${{ always() }} | |
| with: | |
| name: ${{env.PLATFORM}} | |
| path: ${{env.PLATFORM}}.csv | |
| rhel-fedora-build-test: | |
| strategy: | |
| matrix: | |
| image: [ "rockylinux:8", "rockylinux:9", "fedora:41", "fedora:42" ] | |
| fail-fast: false | |
| name: ${{ matrix.image }} | |
| needs: [ generate-binary-demo ] | |
| runs-on: ubuntu-24.04 | |
| container: | |
| image: ${{ matrix.image }} | |
| env: | |
| CC: gcc | |
| CXX: g++ | |
| JAVA_HOME: /usr/lib/jvm/java-${{ matrix.image == 'fedora:42' && '21' || '17' }}-openjdk | |
| HOME: /root | |
| steps: | |
| - name: Enable EPEL on Rocky Linux | |
| 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 | |
| dnf config-manager --set-enabled ${{ matrix.image == 'rockylinux:8' && 'powertools' || 'crb' }} # For ninja. | |
| - 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 ninja-build nodejs ${{ (matrix.image == 'rockylinux:8' || matrix.image == 'rockylinux:9') && 'gcc-toolset-12 python3.11 python3.11-devel' || 'gcc gcc-c++ python3-devel' }} ${{ matrix.image == 'fedora:42' && 'java-21-openjdk-devel' || 'java-17-openjdk-devel' }} | |
| dnf clean all | |
| - name: Enable gcc-toolset-12 and python3.11 on Rocky Linux | |
| if: ${{ matrix.image == 'rockylinux:8' || matrix.image == 'rockylinux:9' }} | |
| continue-on-error: true | |
| run: | | |
| source /opt/rh/gcc-toolset-12/enable | |
| echo $PATH >> $GITHUB_PATH | |
| alternatives --install /usr/bin/python3 python3 /usr/bin/python3.11 1 | |
| alternatives --set python3 /usr/bin/python3.11 | |
| echo "PYTHON_EXECUTABLE=/usr/bin/python3.11" >> $GITHUB_ENV | |
| echo "PYBIND11_PYTHON_VERSION=3.11" >> $GITHUB_ENV | |
| - 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: Determine NUM_THREADS | |
| run: | | |
| export NUM_THREADS=$(nproc) | |
| echo "NUM_THREADS=$NUM_THREADS" >> $GITHUB_ENV | |
| echo "TEST_JOBS=$NUM_THREADS" >> $GITHUB_ENV | |
| echo "CARGO_BUILD_JOBS=$NUM_THREADS" >> $GITHUB_ENV | |
| echo "NUM_THREADS=$NUM_THREADS" | |
| - name: Test | |
| continue-on-error: true | |
| run: | | |
| set +e | |
| make test | |
| echo "Test,$?" >> status.txt | |
| make clean | |
| - name: Build | |
| continue-on-error: true | |
| run: | | |
| set +e | |
| make release | |
| echo "Build,$?" >> status.txt | |
| - name: C and C++ examples | |
| continue-on-error: true | |
| run: | | |
| set +e | |
| make example | |
| echo "C and C++ examples,$?" >> status.txt | |
| - name: Python test | |
| continue-on-error: true | |
| run: | | |
| set +e | |
| make pytest-venv | |
| echo "Python test,$?" >> status.txt | |
| - name: Node.js test | |
| continue-on-error: true | |
| run: | | |
| node --version | |
| npm --version | |
| set +e | |
| make nodejstest-deps | |
| echo "Node.js test,$?" >> status.txt | |
| - name: Java test | |
| continue-on-error: true | |
| run: | | |
| java --version | |
| set +e | |
| make javatest | |
| echo "Java test,$?" >> status.txt | |
| - name: Cleanup | |
| continue-on-error: true | |
| run: make clean | |
| - 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.81 | |
| - name: Rust share build | |
| continue-on-error: true | |
| run: echo $'[workspace]\nmembers = ["tools/rust_api","examples/rust"]\nresolver = "2"' > Cargo.toml | |
| - name: Rust test | |
| continue-on-error: true | |
| working-directory: tools/rust_api | |
| run: | | |
| cargo --version | |
| set +e | |
| cargo test --release --features arrow | |
| echo "Rust test,$?" >> ../../status.txt | |
| - name: Rust example | |
| continue-on-error: true | |
| working-directory: examples/rust | |
| run: | | |
| set +e | |
| cargo build --release --features arrow | |
| echo "Rust example,$?" >> ../../status.txt | |
| - name: Rename status.txt | |
| if: ${{ always() }} | |
| run: | | |
| cat status.txt | |
| PLATFORM=$(echo ${{ matrix.image }} | tr ':' '-') | |
| echo "PLATFORM=$PLATFORM" >> $GITHUB_ENV | |
| mv status.txt $PLATFORM.csv | |
| - uses: actions/upload-artifact@v4 | |
| if: ${{ always() }} | |
| with: | |
| name: ${{env.PLATFORM}} | |
| path: ${{env.PLATFORM}}.csv | |
| archlinux-build-test: | |
| name: archlinux | |
| runs-on: ubuntu-24.04 | |
| 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 ninja gcc python 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: Determine NUM_THREADS | |
| run: | | |
| export NUM_THREADS=$(nproc) | |
| echo "NUM_THREADS=$NUM_THREADS" >> $GITHUB_ENV | |
| echo "TEST_JOBS=$NUM_THREADS" >> $GITHUB_ENV | |
| echo "CARGO_BUILD_JOBS=$NUM_THREADS" >> $GITHUB_ENV | |
| echo "NUM_THREADS=$NUM_THREADS" | |
| - name: Test | |
| continue-on-error: true | |
| run: | | |
| set +e | |
| make test | |
| echo "Test,$?" >> status.txt | |
| make clean | |
| - name: Build | |
| continue-on-error: true | |
| run: | | |
| set +e | |
| make release | |
| echo "Build,$?" >> status.txt | |
| - name: C and C++ examples | |
| continue-on-error: true | |
| run: | | |
| set +e | |
| make example | |
| echo "C and C++ examples,$?" >> status.txt | |
| - name: Python test | |
| continue-on-error: true | |
| run: | | |
| set +e | |
| make pytest-venv | |
| echo "Python test,$?" >> status.txt | |
| - name: Node.js test | |
| continue-on-error: true | |
| run: | | |
| set +e | |
| make nodejstest-deps | |
| echo "Node.js test,$?" >> status.txt | |
| - name: Java test | |
| continue-on-error: true | |
| run: | | |
| java --version | |
| set +e | |
| make javatest | |
| echo "Java test,$?" >> status.txt | |
| - name: Cleanup | |
| continue-on-error: true | |
| run: make clean | |
| - 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 stable | |
| - name: Rust share build | |
| continue-on-error: true | |
| run: echo $'[workspace]\nmembers = ["tools/rust_api","examples/rust"]\nresolver = "2"' > Cargo.toml | |
| - name: Rust test | |
| working-directory: tools/rust_api | |
| continue-on-error: true | |
| run: | | |
| cargo --version | |
| set +e | |
| cargo test --release --features arrow | |
| echo "Rust test,$?" >> ../../status.txt | |
| - name: Rust example | |
| working-directory: examples/rust | |
| continue-on-error: true | |
| run: | | |
| set +e | |
| cargo build --release --features arrow | |
| echo "Rust example,$?" >> ../../status.txt | |
| - name: Rename status.txt | |
| if: ${{ always() }} | |
| run: | | |
| cat status.txt | |
| mv status.txt archlinux.csv | |
| - uses: actions/upload-artifact@v4 | |
| if: ${{ always() }} | |
| with: | |
| name: archlinux | |
| path: archlinux.csv | |
| collect-results: | |
| runs-on: ubuntu-22.04 | |
| 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 }} | |
| if: ${{ always() }} | |
| needs: | |
| [ | |
| 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 |