packages feed

summoner-2.2.0.0: examples/cabal-full/.github/workflows/ci.yml

name: CI

on:
  pull_request:
    types: [synchronize, opened, reopened]
  push:
    branches: [main]
  schedule:
    # additionally run once per week (At 00:00 on Sunday) to maintain cache
    - cron: '0 0 * * 0'

jobs:
  cabal:
    name: ${{ matrix.os }} / ghc ${{ matrix.ghc }}
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, macOS-latest, windows-latest]
        cabal: ["3.14.2.0"]
        ghc:
          - "8.4.4"
          - "8.6.5"
          - "8.8.4"
          - "8.10.7"
          - "9.0.2"
          - "9.2.8"
          - "9.4.8"
          - "9.6.7"
          - "9.8.4"
          - "9.10.3"
          - "9.12.2"
        exclude:
          - os: macOS-latest
            ghc: 9.10.3
          - os: macOS-latest
            ghc: 9.8.4
          - os: macOS-latest
            ghc: 9.6.7
          - os: macOS-latest
            ghc: 9.4.8
          - os: macOS-latest
            ghc: 9.2.8
          - os: macOS-latest
            ghc: 9.0.2
          - os: macOS-latest
            ghc: 8.10.7
          - os: macOS-latest
            ghc: 8.8.4
          - os: macOS-latest
            ghc: 8.6.5
          - os: macOS-latest
            ghc: 8.4.4
          - os: windows-latest
            ghc: 9.10.3
          - os: windows-latest
            ghc: 9.8.4
          - os: windows-latest
            ghc: 9.6.7
          - os: windows-latest
            ghc: 9.4.8
          - os: windows-latest
            ghc: 9.2.8
          - os: windows-latest
            ghc: 9.0.2
          - os: windows-latest
            ghc: 8.10.7
          - os: windows-latest
            ghc: 8.8.4
          - os: windows-latest
            ghc: 8.6.5
          - os: windows-latest
            ghc: 8.4.4

    steps:
    - uses: actions/checkout@v4

    - uses: haskell-actions/setup@v2
      id: setup-haskell-cabal
      name: Setup Haskell
      with:
        ghc-version: ${{ matrix.ghc }}
        cabal-version: ${{ matrix.cabal }}

    - name: Configure
      run: |
        cabal configure --enable-tests --enable-benchmarks --enable-documentation --test-show-details=direct --write-ghc-environment-files=always

    - name: Freeze
      run: |
        cabal freeze

    - uses: actions/cache@v4
      name: Cache ~/.cabal/store
      with:
        path: ${{ steps.setup-haskell-cabal.outputs.cabal-store }}
        key: ${{ runner.os }}-${{ matrix.ghc }}-${{ hashFiles('cabal.project.freeze') }}

    - name: Install dependencies
      run: |
        cabal build all --only-dependencies

    - name: Build
      run: |
        cabal build all

    - name: Test
      run: |
        cabal test all

    - name: Documentation
      run: |
        cabal haddock