Skip to content

Build Extensions

Build Extensions #217

name: Build-Extensions
on: workflow_dispatch
jobs:
build-linux-extensions-x86_64:
runs-on: kuzu-self-hosted-linux-building-x86_64
steps:
- uses: actions/checkout@v4
- name: Build precompiled extensions
run: make extension-release NUM_THREADS=$(nproc)
- name: Collect built artifacts
run: /opt/python/cp310-cp310/bin/python scripts/collect-extensions.py
- name: Upload built artifacts
uses: actions/upload-artifact@v4
with:
name: kuzu-extensions_linux-x86_64
path: extension-artifacts
build-linux-extensions-aarch64:
runs-on: kuzu-self-hosted-linux-building-aarch64
steps:
- uses: actions/checkout@v4
- name: Build precompiled extensions
run: make extension-release NUM_THREADS=$(nproc)
- name: Collect built artifacts
run: /opt/python/cp310-cp310/bin/python scripts/collect-extensions.py
- name: Upload built artifacts
uses: actions/upload-artifact@v4
with:
name: kuzu-extensions_linux-aarch64
path: extension-artifacts
build-linux-extensions-x86:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Start Docker container
run: |
docker run -d --name kuzu-x86 \
-v $PWD:/kuzu -w /kuzu \
-e NUM_THREADS=$(nproc) -e CC=gcc -e CXX=g++ \
i386/debian:stable tail -f /dev/null
- name: Install dependencies
run: |
docker exec kuzu-x86 apt-get update
docker exec kuzu-x86 apt-get install -y git python3 ninja-build build-essential cmake libssl-dev
- name: Build precompiled extensions
run: |
docker exec kuzu-x86 make extension-release NUM_THREADS=$(nproc)
- name: Collect built artifacts
run: |
python3 scripts/collect-extensions.py
sudo chown -R $USER:$USER extension-artifacts
sudo chmod -R 755 extension-artifacts
- name: Upload built artifacts
uses: actions/upload-artifact@v4
with:
name: kuzu-extensions_linux-x86
path: extension-artifacts
- name: Stop Docker container
run: docker stop kuzu-x86
build-mac-extensions-arm64:
runs-on: self-hosted-mac-arm
steps:
- uses: actions/checkout@v4
- name: Build precompiled extensions
run: env OPENSSL_ROOT_DIR=/opt/homebrew/Cellar/openssl@3/3.3.0 make extension-release NUM_THREADS=$(sysctl -n hw.logicalcpu)
env:
MACOSX_DEPLOYMENT_TARGET: 11.0
CMAKE_OSX_ARCHITECTURES: "arm64"
- name: Collect built artifacts
run: python3 scripts/collect-extensions.py
- name: Upload built artifacts
uses: actions/upload-artifact@v4
with:
name: kuzu-extensions_osx-arm64
path: extension-artifacts
build-mac-extensions-x86_64:
runs-on: self-hosted-mac-x64
steps:
- uses: actions/checkout@v4
- name: Build precompiled extensions
run: make extension-release NUM_THREADS=$(sysctl -n hw.logicalcpu)
env:
MACOSX_DEPLOYMENT_TARGET: 11.0
CMAKE_OSX_ARCHITECTURES: "x86_64"
- name: Collect built artifacts
run: python3 scripts/collect-extensions.py
- name: Upload built artifacts
uses: actions/upload-artifact@v4
with:
name: kuzu-extensions_osx-x86_64
path: extension-artifacts
build-windows-extensions-x86_64:
runs-on: self-hosted-windows
env:
NUM_THREADS: 18
steps:
- uses: actions/checkout@v4
- name: Build precompiled extensions
shell: cmd
run: |
call "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvars64.bat"
make extension-release
- name: Collect built artifacts
run: python scripts/collect-extensions.py
- name: Upload built artifacts
uses: actions/upload-artifact@v4
with:
name: kuzu-extensions_win-x86_64
path: extension-artifacts
get-dockerhub-extensions:
uses: ./.github/workflows/get-extensions-from-dockerhub.yml
update-extensions-repo:
runs-on: ubuntu-latest
needs:
- build-linux-extensions-x86_64
- build-linux-extensions-aarch64
- build-linux-extensions-x86
- build-mac-extensions-arm64
- build-mac-extensions-x86_64
- build-windows-extensions-x86_64
- get-dockerhub-extensions
steps:
- name: Free disk space on Ubuntu runner
uses: kfir4444/free-disk-space@main
with:
tool-cache: true
android: true
dotnet: true
haskell: true
large-packages: true
swap-storage: true
- uses: actions/checkout@v4
- name: Detect release version
run: |
echo "RELEASE_VERSION=v$(cat CMakeLists.txt | grep "DKUZU_EXTENSION_VERSION" | cut -d '"' -f 2 )" >> $GITHUB_ENV
- name: Delete checked out repository
run: |
pwd
ls -al
cd .. && rm -rf kuzudb
- uses: actions/download-artifact@v4
with:
name: dockerhub-extensions
- name: Clear old artifacts
run: |
ls -al
rm -rf releases/$RELEASE_VERSION/
- name: Create temporary directory for artifacts
run: |
mkdir -p extension-artifacts
mkdir -p extension-artifacts/linux_amd64
mkdir -p extension-artifacts/linux_arm64
mkdir -p extension-artifacts/linux_x86
mkdir -p extension-artifacts/osx_amd64
mkdir -p extension-artifacts/osx_arm64
mkdir -p extension-artifacts/win_amd64
- name: Download built artifacts for linux-x86_64
uses: actions/download-artifact@v4
with:
name: kuzu-extensions_linux-x86_64
path: extension-artifacts/linux_amd64
- name: Download built artifacts for linux-aarch64
uses: actions/download-artifact@v4
with:
name: kuzu-extensions_linux-aarch64
path: extension-artifacts/linux_arm64
- name: Download built artifacts for linux-x86
uses: actions/download-artifact@v4
with:
name: kuzu-extensions_linux-x86
path: extension-artifacts/linux_x86
- name: Download built artifacts for osx-x86_64
uses: actions/download-artifact@v4
with:
name: kuzu-extensions_osx-x86_64
path: extension-artifacts/osx_amd64
- name: Download built artifacts for osx-aarch64
uses: actions/download-artifact@v4
with:
name: kuzu-extensions_osx-arm64
path: extension-artifacts/osx_arm64
- name: Download built artifacts for windows-x86_64
uses: actions/download-artifact@v4
with:
name: kuzu-extensions_win-x86_64
path: extension-artifacts/win_amd64
- name: Copy built artifacts
run: |
rsync -av extension-artifacts/ releases/$RELEASE_VERSION/
- name: Remove temporary directory
run: rm -rf extension-artifacts
- name: Set artifact permissions
run: |
chmod -R 755 releases/$RELEASE_VERSION
- name: List downloaded artifacts
run: ls -R releases/$RELEASE_VERSION
- name: Upload new artifacts
uses: actions/upload-artifact@v4
with:
name: kuzu-extensions
path: |
releases
dataset