Skip to content

SQLite: flesh out RETURNING clause (#785) #744

SQLite: flesh out RETURNING clause (#785)

SQLite: flesh out RETURNING clause (#785) #744

Workflow file for this run

name: Build
on:
push:
paths-ignore:
- 'docs/*/**'
branches: [master]
pull_request:
jobs:
continuous-integration:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- ghc-version: "8.10.7"
cabal-flags: ""
duckdb: false
- ghc-version: "9.0.2"
cabal-flags: ""
duckdb: false
- ghc-version: "9.2.8"
cabal-flags: ""
duckdb: false
- ghc-version: "9.4.8"
cabal-flags: ""
duckdb: false
- ghc-version: "9.6.7"
cabal-flags: ""
duckdb: true
- ghc-version: "9.8.4"
cabal-flags: ""
duckdb: true
- ghc-version: "9.10.3"
cabal-flags: ""
duckdb: true
- ghc-version: "9.12.2"
cabal-flags: ""
duckdb: true
# Temporary cabal flags until all dependencies are updated
- ghc-version: "9.14.1"
cabal-flags: "--allow-newer=base --allow-newer=template-haskell --allow-newer=ghc-bignum"
duckdb: true
steps:
- uses: actions/checkout@v4
- name: Install cabal/ghc
uses: haskell-actions/setup@v2
id: setup-haskell
with:
ghc-version: ${{ matrix.ghc-version }}
cabal-version: '3.12.1.0'
# duckdb-simple is only supported for GHC 9.6+
- name: Disable beam-duckdb
if: ${{ !matrix.duckdb }}
run: |
sed -i '/beam-duckdb/d' ./cabal.project
- name: Generate freeze file
run: |
cabal update
cabal configure --disable-optimization --enable-tests
cabal freeze ${{matrix.cabal-flags}}
# Exclude the timestamp of Hackage index update from our cache key, to
# avoid invalidating cache too often.
# This idea comes from github.com/jaspervdj/hakyll
sed '/^index-state: /d' cabal.project.freeze > dependencies-versions
- name: Cache cabal work
uses: actions/cache@v4
with:
path: |
dist-newstyle
${{ steps.setup-haskell.outputs.cabal-store }}
key: ${{ runner.os }}-${{ hashFiles('dependencies-versions', 'cabal.project.local') }}-cabal-install
- name: Install DuckDB artifact
if: ${{ matrix.duckdb }}
run: |
curl -L -o libduckdb.zip https://github.com/duckdb/duckdb/releases/download/v1.4.1/libduckdb-linux-amd64.zip && \
unzip libduckdb.zip
sudo mv libduckdb.so /usr/lib/libduckdb.so
sudo mv duckdb.h /usr/include/
sudo ldconfig
rm libduckdb.zip
- name: Build dependencies
run: |
cabal build all --only-dependencies ${{matrix.cabal-flags}}
- name: Build beam packages
run: |
cabal build all ${{matrix.cabal-flags}}
- name: Run tests
run: |
cabal test all ${{matrix.cabal-flags}}
release-artifacts:
# Only build release artifacts if `continuous-integration` is successful
needs: [continuous-integration]
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- name: Check packages for common mistakes
run: |
for pkg in $(find . -mindepth 1 -maxdepth 1 -type d -name "beam-*")
do
cd $pkg
echo "Checking $pkg"
cabal check
cd $GITHUB_WORKSPACE
done
# Note that the ubuntu-24.04 image includes cabal
# https://github.com/actions/runner-images/blob/main/images/ubuntu/Ubuntu2404-Readme.md#haskell-tools
- name: Build release artifacts
run : |
cabal sdist all
- name: Upload build artifacts
uses: actions/upload-artifact@v4
if: github.ref == 'refs/heads/master'
with:
name: ${{ runner.os }}-release-artifact
path: dist-newstyle/sdist/beam-*
retention-days: 7