name: Haskell CI on: pull_request: branches: - dev - main push: branches: - main jobs: build: runs-on: docker container: image: ubuntu:22.04 # Use Ubuntu base and install via ghcup like your local setup steps: - name: Checkout code uses: https://github.com/actions/checkout@v4 - name: Install dependencies run: | apt-get update apt-get install -y curl build-essential libffi-dev libgmp-dev zlib1g-dev - name: Install GHCup run: | curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh echo "source ~/.ghcup/env" >> ~/.bashrc - name: Install GHC and Cabal (matching local versions) run: | source ~/.ghcup/env ghcup install ghc 9.10.2 --set ghcup install cabal 3.14.2.0 --set - name: Cache Cabal packages uses: https://github.com/actions/cache@v4 with: path: | ~/.cabal/packages ~/.cabal/store dist-newstyle key: ${{ runner.os }}-ghc-9.10.2-cabal-${{ hashFiles('**/*.cabal', '**/cabal.project') }} restore-keys: | ${{ runner.os }}-ghc-9.10.2-cabal- - name: Update Cabal package index run: | source ~/.ghcup/env cabal update - name: Configure project run: | source ~/.ghcup/env cabal configure --enable-tests --enable-benchmarks - name: Build dependencies run: | source ~/.ghcup/env cabal build --only-dependencies --enable-tests --enable-benchmarks - name: Build project run: | source ~/.ghcup/env cabal build --enable-tests --enable-benchmarks - name: Run tests run: | source ~/.ghcup/env cabal test --test-show-details=direct - name: Run documentation build run: | source ~/.ghcup/env cabal haddock