mirror of
https://github.com/cachix/stamina.hs.git
synced 2024-09-11 10:35:30 +03:00
73 lines
2.2 KiB
YAML
73 lines
2.2 KiB
YAML
name: "build & test"
|
|
on:
|
|
push:
|
|
pull_request:
|
|
branches: [main]
|
|
|
|
jobs:
|
|
build:
|
|
name: GHC ${{ matrix.ghc-version }} on ${{ matrix.os }}
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os: [ubuntu-latest]
|
|
ghc-version: ['9.8', '9.6', '9.4', '9.2']
|
|
|
|
include:
|
|
- os: windows-latest
|
|
ghc-version: '9.8'
|
|
- os: macos-latest
|
|
ghc-version: '9.8'
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Set up GHC ${{ matrix.ghc-version }}
|
|
uses: haskell-actions/setup@v2
|
|
id: setup
|
|
with:
|
|
ghc-version: ${{ matrix.ghc-version }}
|
|
# Defaults, added for clarity:
|
|
cabal-version: 'latest'
|
|
cabal-update: true
|
|
|
|
- name: Configure the build
|
|
run: |
|
|
cabal configure --enable-tests --enable-benchmarks --disable-documentation
|
|
cabal build all --dry-run
|
|
# The last step generates dist-newstyle/cache/plan.json for the cache key.
|
|
|
|
- name: Restore cached dependencies
|
|
uses: actions/cache/restore@v3
|
|
id: cache
|
|
env:
|
|
key: ${{ runner.os }}-ghc-${{ steps.setup.outputs.ghc-version }}-cabal-${{ steps.setup.outputs.cabal-version }}
|
|
with:
|
|
path: ${{ steps.setup.outputs.cabal-store }}
|
|
key: ${{ env.key }}-plan-${{ hashFiles('**/plan.json') }}
|
|
restore-keys: ${{ env.key }}-
|
|
|
|
- name: Install dependencies
|
|
# If we had an exact cache hit, the dependencies will be up to date.
|
|
if: steps.cache.outputs.cache-hit != 'true'
|
|
run: cabal build all --only-dependencies
|
|
|
|
# Cache dependencies already here, so that we do not have to rebuild them should the subsequent steps fail.
|
|
- name: Save cached dependencies
|
|
uses: actions/cache/save@v3
|
|
# If we had an exact cache hit, trying to save the cache would error because of key clash.
|
|
if: steps.cache.outputs.cache-hit != 'true'
|
|
with:
|
|
path: ${{ steps.setup.outputs.cabal-store }}
|
|
key: ${{ steps.cache.outputs.cache-primary-key }}
|
|
|
|
- name: Build
|
|
run: cabal build all
|
|
|
|
- name: Run tests
|
|
run: cabal test all
|
|
|
|
- name: Build documentation
|
|
run: cabal haddock all
|