Reviewed-on: #5 Co-authored-by: Igor Ranieri <igor@elland.me> Co-committed-by: Igor Ranieri <igor@elland.me>
99 lines
2.8 KiB
YAML
99 lines
2.8 KiB
YAML
name: Haskell CI
|
|
on:
|
|
pull_request:
|
|
branches:
|
|
- dev
|
|
- main
|
|
push:
|
|
branches:
|
|
- main
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: docker
|
|
container:
|
|
image: elland/haddock2:latest
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
- name: Check versions
|
|
run: |
|
|
ghc --version
|
|
cabal --version
|
|
node --version
|
|
- name: Cache Cabal packages
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: |
|
|
~/.cabal/packages
|
|
~/.cabal/store
|
|
dist-newstyle
|
|
key: ${{ runner.os }}-haskell-9.10-cabal-${{ hashFiles('**/*.cabal', '**/cabal.project') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-haskell-9.10-cabal-
|
|
- name: Update Cabal package index
|
|
run: cabal update
|
|
- name: Configure project
|
|
run: cabal configure --enable-tests --enable-benchmarks
|
|
- name: Build dependencies
|
|
run: cabal build --only-dependencies --enable-tests --enable-benchmarks
|
|
- name: Build project
|
|
run: cabal build --enable-tests --enable-benchmarks
|
|
- name: Run documentation build
|
|
run: cabal haddock
|
|
|
|
test:
|
|
runs-on: docker
|
|
container:
|
|
image: elland/haddock2:latest
|
|
needs: build
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
- name: Cache Cabal packages
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: |
|
|
~/.cabal/packages
|
|
~/.cabal/store
|
|
dist-newstyle
|
|
key: ${{ runner.os }}-haskell-9.10-cabal-${{ hashFiles('**/*.cabal', '**/cabal.project') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-haskell-9.10-cabal-
|
|
- name: Update Cabal package index
|
|
run: cabal update
|
|
- name: Configure project
|
|
run: cabal configure --enable-tests --enable-benchmarks
|
|
- name: Build dependencies
|
|
run: cabal build --only-dependencies --enable-tests --enable-benchmarks
|
|
- name: Build project
|
|
run: cabal build --enable-tests --enable-benchmarks
|
|
- name: Run tests
|
|
run: cabal test --test-show-details=direct
|
|
|
|
fourmolu:
|
|
runs-on: docker
|
|
container:
|
|
image: elland/haddock2:latest
|
|
needs: build
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
- name: Run fourmolu
|
|
run: |
|
|
find src test app -name "*.hs" -exec fourmolu --check-idempotence {} \; 2>/dev/null || true
|
|
find src test app -name "*.hs" -exec fourmolu --mode check {} \;
|
|
|
|
hlint:
|
|
runs-on: docker
|
|
container:
|
|
image: elland/haddock2:latest
|
|
needs: build
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
- name: Run hlint
|
|
run: |
|
|
if [ -d src ]; then hlint src/; fi
|
|
if [ -d test ]; then hlint test/; fi
|
|
if [ -d app ]; then hlint app/; fi
|