CI #262
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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.8"] | |
ghc: | |
- "8.10.7" | |
- "9.0.2" | |
- "9.2.7" | |
- "9.4.4" | |
- "9.6.1" | |
exclude: | |
- os: macOS-latest | |
ghc: 8.10.7 | |
- os: macOS-latest | |
ghc: 9.0.2 | |
- os: macOS-latest | |
ghc: 9.2.7 | |
- os: macOS-latest | |
ghc: 9.4.4 | |
- os: windows-latest | |
ghc: 8.10.7 | |
- os: windows-latest | |
ghc: 9.0.2 | |
- os: windows-latest | |
ghc: 9.2.7 | |
- os: windows-latest | |
ghc: 9.4.4 | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: haskell/actions/[email protected] | |
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@v3 | |
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 | |
stack: | |
name: stack / ghc ${{ matrix.ghc }} | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
stack: ["2.9.3"] | |
ghc: ["9.2.7"] | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: haskell/actions/[email protected] | |
name: Setup Haskell Stack | |
with: | |
ghc-version: ${{ matrix.ghc }} | |
stack-version: ${{ matrix.stack }} | |
- uses: actions/cache@v3 | |
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 | |
format: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: fourmolu/fourmolu-action@v6 | |
hlint: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
# See: https://github.com/haskell/actions/issues/128 | |
- name: Fix Ubuntu Runner | |
run: | | |
sudo apt-get install -y libncurses5 | |
- name: Run HLint | |
env: | |
HLINT_VERSION: "3.5" | |
run: | | |
curl -L https://github.com/ndmitchell/hlint/releases/download/v${HLINT_VERSION}/hlint-${HLINT_VERSION}-x86_64-linux.tar.gz --output hlint.tar.gz | |
tar -xvf hlint.tar.gz | |
./hlint-${HLINT_VERSION}/hlint src/ test/ | |
stan: | |
name: stan | |
runs-on: ubuntu-latest | |
env: | |
CABAL_VERSION: "3.6" | |
# `stan` Github Release supports this version as of now. If we want to run stan on multiple | |
# GHC versions, we need to build `stan` from source. | |
GHC_VERSION: "8.10.1" | |
STAN_VERSION: "0.0.1.0" | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: haskell/actions/[email protected] | |
id: setup-haskell-cabal | |
name: Setup Haskell | |
with: | |
ghc-version: ${{ env.GHC_VERSION }} | |
cabal-version: ${{ env.CABAL_VERSION }} | |
- 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@v3 | |
name: Cache ~/.cabal/store | |
with: | |
path: ${{ steps.setup-haskell-cabal.outputs.cabal-store }} | |
key: stan-${{ runner.os }}-${{ env.GHC_VERSION }}-${{ hashFiles('cabal.project.freeze') }} | |
- name: Install dependencies | |
run: | | |
cabal build all --only-dependencies | |
- name: Build | |
run: | | |
cabal build all | |
- name: Download `stan` | |
run: | | |
curl --silent -L https://github.com/kowainik/stan/releases/latest/download/stan-$STAN_VERSION-Linux-ghc-$GHC_VERSION --output stan | |
chmod +x stan | |
- name: Run `stan` | |
run: | | |
./stan report | |
- name: Upload HTML stan report artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: stan-report | |
path: stan.html |