Skip to content

Merge pull request #1452 from suketa/fix/instance-cache-registered-fu… #3045

Merge pull request #1452 from suketa/fix/instance-cache-registered-fu…

Merge pull request #1452 from suketa/fix/instance-cache-registered-fu… #3045

name: Windows
on:
push:
branches:
- main
pull_request:
types:
- opened
- synchronize
- reopened
permissions:
contents: read
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
test:
runs-on: windows-latest
timeout-minutes: 8
strategy:
fail-fast: false
matrix:
ruby: ['3.3.10', '3.4.10', '4.0.6', 'ucrt', 'mingw', 'mswin', 'head']
duckdb: ['1.4.5', '1.5.5']
env:
# Released Bundler is broken on ruby-head due to ruby/ruby#16895.
# Use Ruby's bundled Bundler until rubygems/rubygems#9529 is released.
BUNDLER_VERSION: ${{ (matrix.ruby == 'head' || matrix.ruby == 'ucrt' || matrix.ruby == 'mswin') && '0' || '' }}
steps:
- uses: actions/checkout@v4
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby }}
bundler-cache: true
- name: duckdb cache
id: duckdb-cache
uses: actions/cache@v4
with:
path: libduckdb-windows-amd64
key: ${{ runner.os }}-duckdb-v${{ matrix.duckdb }}
- name: download duckdb binary for windows 64bit
if: steps.duckdb-cache.outputs.cache-hit != 'true'
env:
DUCKDB_VERSION: ${{ matrix.duckdb }}
run: |
curl -OL https://github.com/duckdb/duckdb/releases/download/v${env:DUCKDB_VERSION}/libduckdb-windows-amd64.zip
switch ($env:DUCKDB_VERSION) {
"1.5.5" { $EXPECTED_SHA256 = "8375eb1fcf2212e8a0817950354815d4dde9dd383c2d9fa7b8975b71e278c1bd" }
"1.4.5" { $EXPECTED_SHA256 = "f2079105369a2698f7d9663e5908a16919e7b03f4ff681ceb716b270a5903a11" }
default { Write-Error "No known SHA256 for DuckDB v$env:DUCKDB_VERSION"; exit 1 }
}
$ACTUAL_SHA256 = (Get-FileHash libduckdb-windows-amd64.zip -Algorithm SHA256).Hash
if ($ACTUAL_SHA256 -ne $EXPECTED_SHA256) {
Write-Error "SHA256 mismatch: expected $EXPECTED_SHA256, got $ACTUAL_SHA256"; exit 1
}
mkdir libduckdb-windows-amd64
unzip libduckdb-windows-amd64.zip -d libduckdb-windows-amd64
- name: setup duckdb.dll
run: |
cp libduckdb-windows-amd64/duckdb.dll C:/Windows/System32/
- name: Build with Rake with Ruby ${{ matrix.ruby }}
run: |
bundle exec rake build -- --with-duckdb-include=../../../../libduckdb-windows-amd64 --with-duckdb-lib=../../../../libduckdb-windows-amd64
- name: rake test
uses: nick-fields/retry@v3
with:
timeout_minutes: 1
max_attempts: 1
command: bundle exec rake test TESTOPTS="--verbose"
post-test:
name: All tests passed on Windows
runs-on: windows-latest
needs: test
steps:
- run: echo ok