name: CI # Trigger the workflow on push or pull request, but only for the master branch on: pull_request: push: branches: [master] jobs: cabal: name: ${{ matrix.os }} / ghc ${{ matrix.ghc }} runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-latest, macOS-latest, windows-latest] cabal: ["3.2"] ghc: - "8.6" - "8.8" - "8.10" - "9.0" - "9.2" - "9.4" - "latest" exclude: - os: macOS-latest ghc: 9.0 - os: macOS-latest ghc: 8.10 - os: macOS-latest ghc: 8.8 - os: macOS-latest ghc: 8.6 - os: macOS-latest ghc: 8.4 - os: macOS-latest ghc: 8.2 - os: macOS-latest ghc: 8.0 - os: windows-latest ghc: 9.0 - os: windows-latest ghc: 8.10 - os: windows-latest ghc: 8.8 - os: windows-latest ghc: 8.6 - os: windows-latest ghc: 8.4 - os: windows-latest ghc: 8.2 - os: windows-latest ghc: 8.0 steps: - uses: actions/checkout@v3 if: github.event.action == 'opened' || github.event.action == 'synchronize' || github.event.ref == 'refs/heads/master' - 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 --test-show-details=direct - name: Freeze run: | cabal freeze - uses: actions/cache@v2 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 --enable-tests --enable-benchmarks --write-ghc-environment-files=always - name: Test run: | cabal test all - name: Test inspect if: matrix.ghc == '8.10' run: | rm cabal.project.freeze cabal test .:inspect --flags="enable-inspect" stack: name: stack / ghc ${{ matrix.ghc }} runs-on: ubuntu-latest strategy: matrix: stack: ["latest"] ghc: ["9.2"] steps: - uses: actions/checkout@v2 if: github.event.action == 'opened' || github.event.action == 'synchronize' || github.event.ref == 'refs/heads/master' - uses: haskell/actions/setup@v1 name: Setup Haskell Stack with: ghc-version: ${{ matrix.ghc }} stack-version: ${{ matrix.stack }} - uses: actions/cache@v2 name: Cache ~/.stack with: path: ~/.stack key: ${{ runner.os }}-${{ matrix.ghc }}-stack - name: Install dependencies run: | stack build --system-ghc --test --bench --no-run-tests --no-run-benchmarks --only-dependencies - name: Build run: | stack build --system-ghc --test --bench --no-run-tests --no-run-benchmarks - name: Test run: | stack test --system-ghc