Skip to content

feat: bump to exarrow-rs 0.7.0 (#10) #3

feat: bump to exarrow-rs 0.7.0 (#10)

feat: bump to exarrow-rs 0.7.0 (#10) #3

Workflow file for this run

# Copyright (c) 2025-2026 ADBC Drivers Contributors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# !!!! AUTO-GENERATED FILE. DO NOT EDIT. !!!!
# USE adbc-gen-workflow (see adbc-drivers/dev) TO UPDATE THIS FILE.
# This is a common workflow for building & testing drivers:
#
# - Build the driver
# - Start dependencies
# - Run tests
# - Build the shared library
name: Custom Release
on:
push:
tags:
- "src/v**"
workflow_dispatch: {}
concurrency:
group: ${{ github.repository }}-${{ github.ref }}-${{ github.workflow }}
cancel-in-progress: true
defaults:
run:
shell: bash
jobs:
test:
name: "Test/${{ matrix.platform }}_${{ matrix.arch }}"
runs-on: ${{ matrix.runner }}
strategy:
fail-fast: true
matrix:
include:
- { platform: linux, arch: amd64, runner: ubuntu-latest }
- { platform: macos, arch: arm64, runner: macos-latest }
- { platform: windows, arch: amd64, runner: windows-latest }
permissions:
contents: read
steps:
- name: free up disk space
if: runner.os != 'Windows'
run: |
# Preinstalled tools use a lot of disk space, free up some space
# https://github.com/actions/runner-images/issues/2840
sudo rm -rf "$AGENT_TOOLSDIRECTORY"
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0
persist-credentials: false
submodules: 'recursive'
- uses: actions-rust-lang/setup-rust-toolchain@1780873c7b576612439a134613cc4cc74ce5538c # v1.15.2
with:
components: "clippy"
- uses: prefix-dev/setup-pixi@a0af7a228712d6121d37aba47adf55c1332c9c2e # v0.9.4
with:
pixi-version: v0.63.2
run-install: false
- name: Build
working-directory: src
run: |
if [[ -f ci/scripts/pre-build.sh ]]; then
echo "Loading pre-build"
./ci/scripts/pre-build.sh test ${{ matrix.platform }} ${{ matrix.arch }}
fi
set -a
if [[ -f .env.build ]]; then
echo "Loading .env.build"
source .env.build
fi
set +a
./ci/scripts/build.sh test ${{ matrix.platform }} ${{ matrix.arch }}
- name: Start Test Dependencies
# Can't use Docker on macOS AArch64 runners, and Windows containers
# work but often the container doesn't support Windows
if: runner.os == 'Linux'
working-directory: src
run: |
if [[ -f compose.yaml ]]; then
if ! docker compose up --detach --wait test-service; then
echo "Service failed to start"
echo "Logs:"
docker compose logs test-service
exit 1
fi
fi
- name: Test
working-directory: src
run: |
set -a
if [[ -f .env ]]; then
source .env
fi
if [[ -f .env.${{ matrix.platform }} ]]; then
source .env.${{ matrix.platform }}
fi
if [[ -f .env.ci ]]; then
source .env.ci
fi
set +a
if [[ -f ci/scripts/pre-test.sh ]]; then
echo "Loading pre-test"
./ci/scripts/pre-test.sh ${{ matrix.platform }} ${{ matrix.arch }}
fi
./ci/scripts/test.sh ${{ matrix.platform }} ${{ matrix.arch }}
if [[ -f ci/scripts/post-test.sh ]]; then
./ci/scripts/post-test.sh
fi
validate:
name: "Validate/${{ matrix.platform }}_${{ matrix.arch }}"
runs-on: ${{ matrix.runner }}
strategy:
fail-fast: true
matrix:
include:
# I think we only need to test one platform, but we can change that later
- { platform: linux, arch: amd64, runner: ubuntu-latest }
permissions:
contents: read
steps:
- name: free up disk space
if: runner.os != 'Windows'
run: |
# Preinstalled tools use a lot of disk space, free up some space
# https://github.com/actions/runner-images/issues/2840
sudo rm -rf "$AGENT_TOOLSDIRECTORY"
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0
persist-credentials: false
submodules: 'recursive'
- uses: actions-rust-lang/setup-rust-toolchain@1780873c7b576612439a134613cc4cc74ce5538c # v1.15.2
with:
components: "clippy"
- uses: prefix-dev/setup-pixi@a0af7a228712d6121d37aba47adf55c1332c9c2e # v0.9.4
with:
pixi-version: v0.63.2
run-install: false
- name: Log in to ghcr.io
if: runner.os == 'Linux'
env:
GHCR_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
echo "$GHCR_TOKEN" | docker login ghcr.io -u ${{ github.actor }} --password-stdin
- name: Build Library
working-directory: src
run: |
if [[ -f ci/scripts/pre-build.sh ]]; then
./ci/scripts/pre-build.sh test ${{ matrix.platform }} ${{ matrix.arch }}
fi
set -a
if [[ -f .env.build ]]; then
echo "Loading .env.build"
source .env.build
fi
if [[ -f .env.test ]]; then
source .env.test
fi
set +a
pixi run adbc-make build DEBUG=true VERBOSE=true DRIVER=exasol IMPL_LANG=script TOOLCHAIN=rust
- name: Start Test Dependencies
# Can't use Docker on macOS AArch64 runners, and Windows containers
# work but often the container doesn't support Windows
if: runner.os == 'Linux'
working-directory: src
run: |
if [[ -f compose.yaml ]]; then
if ! docker compose up --detach --wait test-service; then
echo "Service failed to start"
echo "Logs:"
docker compose logs test-service
exit 1
fi
fi
- name: Validate
if: runner.os == 'Linux'
working-directory: src
run: |
set -a
if [[ -f .env ]]; then
source .env
fi
if [[ -f .env.${{ matrix.platform }} ]]; then
source .env.${{ matrix.platform }}
fi
if [[ -f .env.ci ]]; then
source .env.ci
fi
set +a
if [[ -f ci/scripts/pre-test.sh ]]; then
echo "Loading pre-test"
./ci/scripts/pre-test.sh ${{ matrix.platform }} ${{ matrix.arch }}
fi
docker ps
pixi run validate
if [[ -f ci/scripts/post-test.sh ]]; then
./ci/scripts/post-test.sh
fi
- uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
with:
name: validation-report
path: "src/validation-report.xml"
retention-days: 7
- name: Generate docs
working-directory: src
run: |
pixi run gendocs --output generated
- uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
with:
name: docs
path: "src/generated/exasol.md"
retention-days: 2
build:
name: "Build exasol/${{ matrix.platform }}_${{ matrix.arch }}"
needs: test
runs-on: ${{ matrix.runner }}
strategy:
fail-fast: true
matrix:
include:
- { platform: linux, arch: amd64, runner: ubuntu-latest }
- { platform: linux, arch: arm64, runner: ubuntu-24.04-arm }
- { platform: macos, arch: arm64, runner: macos-latest }
- { platform: windows, arch: amd64, runner: windows-latest }
permissions:
contents: read
packages: read
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0
persist-credentials: false
submodules: 'recursive'
- uses: actions-rust-lang/setup-rust-toolchain@1780873c7b576612439a134613cc4cc74ce5538c # v1.15.2
with:
components: "clippy"
- uses: prefix-dev/setup-pixi@a0af7a228712d6121d37aba47adf55c1332c9c2e # v0.9.4
with:
pixi-version: v0.63.2
run-install: false
- name: Install dev tools
working-directory: src
run: |
pixi install
- name: Log in to ghcr.io
if: runner.os == 'Linux'
env:
GHCR_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
echo "$GHCR_TOKEN" | docker login ghcr.io -u ${{ github.actor }} --password-stdin
- name: Build Library
working-directory: src
run: |
if [[ -f ci/scripts/pre-build.sh ]]; then
./ci/scripts/pre-build.sh release ${{ matrix.platform }} ${{ matrix.arch }}
fi
set -a
if [[ -f .env.build ]]; then
echo "Loading .env.build"
source .env.build
fi
if [[ -f .env.release ]]; then
source .env.release
fi
set +a
pixi run adbc-make check CI=true VERBOSE=true DRIVER=exasol IMPL_LANG=script TOOLCHAIN=rust
- uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
with:
name: drivers-${{ matrix.platform }}-${{ matrix.arch }}
path: "src/build/libadbc_driver_exasol.*"
retention-days: 2
package:
name: "Generate Packages"
runs-on: ubuntu-latest
needs: build
permissions:
contents: read
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0
persist-credentials: false
submodules: 'recursive'
- uses: actions-rust-lang/setup-rust-toolchain@1780873c7b576612439a134613cc4cc74ce5538c # v1.15.2
with:
components: "clippy"
- uses: prefix-dev/setup-pixi@a0af7a228712d6121d37aba47adf55c1332c9c2e # v0.9.4
with:
pixi-version: v0.63.2
run-install: false
- uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0
with:
pattern: "drivers-*"
path: "~/drivers"
- name: Install tools
working-directory: src
run: |
cargo install cargo-about
- name: Generate packages
working-directory: src
run: |
pixi install
pixi run adbc-gen-package \
--name exasol \
--root $(pwd) \
--manifest-template $(pwd)/manifest.toml \
${{ (inputs.release && '--release') || '' }}\
-o ~/packages \
~/drivers/drivers-*-*/
ls ~/packages
- uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
with:
name: all-packages
path: ~/packages
retention-days: 7
test-packages:
name: "Test Packages/${{ matrix.platform }}_${{ matrix.arch }}"
runs-on: ${{ matrix.runner }}
needs:
- package
strategy:
fail-fast: false
matrix:
include:
- { platform: linux, arch: amd64, runner: ubuntu-latest }
- { platform: macos, arch: arm64, runner: macos-latest }
- { platform: windows, arch: amd64, runner: windows-latest }
steps:
# for now, install dbc from main
- uses: actions/setup-go@7a3fe6cf4cb3a834922a1244abfce67bcef6a0c5 # v6.2.0
with:
go-version: 'stable'
- uses: prefix-dev/setup-pixi@a0af7a228712d6121d37aba47adf55c1332c9c2e # v0.9.4
with:
pixi-version: v0.63.2
run-install: false
- uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0
with:
name: "all-packages"
path: "~/packages"
- name: install package
# dbc uses the filename as the driver name
run: |
echo "Installing dbc"
git clone --depth 1 https://github.com/columnar-tech/dbc
cd dbc
go build ./cmd/dbc
echo "Installed dbc"
ls -laR ~/packages
driver_pkg=$(find ~/packages -name '*_${{ matrix.platform }}_${{ matrix.arch }}_*.tar.gz')
echo "Installing ${driver_pkg}"
./dbc install --no-verify "${driver_pkg}"
echo "Installed ${driver_pkg}"
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 1
persist-credentials: false
submodules: 'recursive'
- name: load package
working-directory: src
run: |
if [[ -f ci/scripts/pre-build.sh ]]; then
echo "Loading pre-build"
./ci/scripts/pre-build.sh test ${{ matrix.platform }} ${{ matrix.arch }}
fi
set -a
if [[ -f .env.build ]]; then
echo "Loading .env.build"
source .env.build
fi
if [[ -f .env.ci ]]; then
source .env.ci
fi
set +a
pixi exec -s adbc-driver-manager -s pyarrow -s pytest python -m pytest -vs ci/test_package.py
release:
name: "Release"
runs-on: ubuntu-latest
needs:
- package
- test-packages
- validate
permissions:
contents: write
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0
persist-credentials: false
submodules: 'recursive'
- uses: prefix-dev/setup-pixi@a0af7a228712d6121d37aba47adf55c1332c9c2e # v0.9.4
with:
pixi-version: v0.63.2
run-install: false
- uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0
with:
name: "all-packages"
path: "~/packages"
- uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0
with:
name: "docs"
path: "~/packages"
- name: Release
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
working-directory: src
run: |
ref=${{ github.ref }}
tag=${ref#"refs/tags/"}
pixi run release $(pwd) $tag
gh release upload $tag $(find ~/packages -name '*.tar.gz') $(find ~/packages -name 'manifest.yaml') $(find ~/packages -name '*.md')
- name: Release (dry-run)
if: github.event_name != 'push' || !startsWith(github.ref, 'refs/tags/')
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
working-directory: src
run: |
git tag src/v1000.0.0
tag=src/v1000.0.0
pixi run release --dry-run $(pwd) $tag
echo gh release upload $tag $(find ~/packages -name '*.tar.gz') $(find ~/packages -name 'manifest.yaml') $(find ~/packages -name '*.md')