Skip to content

ci: fix conditional execution #2

ci: fix conditional execution

ci: fix conditional execution #2

Workflow file for this run

name: "simulation"
on:
pull_request:
paths:
- "cabal.project"
- "data/**"
- "simulation/**"
push:
branches:
- main
paths:
- "cabal.project"
- "data/**"
- "simulation/**"
jobs:
simulation-test:
name:
"simulation: Test on ${{ matrix.os }} with GHC ${{ matrix.ghc-version }}"
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [macos-13, macos-14, ubuntu-22.04]
ghc-version: ["9.8"]
steps:
- name: 📥 Checkout repository
uses: actions/checkout@v4
- name: 🛠️ Install 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: 🛠️ Install system dependencies (Linux)
if: runner.os == 'Linux'
run: sudo apt-get install -y graphviz libpango1.0-dev libgtk-3-dev
- name: 🛠️ Install system dependencies (macOS)
if: runner.os == 'macOS'
run: brew install graphviz gtk+3 pango
- name: 🛠️ Configure
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 dependency cache
uses: actions/cache/restore@v4
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('dist-newstyle/cache/plan.json')
}}
restore-keys: ${{ env.key }}-
- name: 🛠️ Install Cabal 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 dependency cache
uses: actions/cache/save@v4
# 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: 🏗️ Test
run: cabal test all
simulation-hlint:
name: "simulation: Check with HLint"
runs-on: ubuntu-22.04
steps:
- name: 📥 Checkout repository
uses: actions/checkout@v4
- name: 🛠️ Set up HLint
uses: haskell-actions/hlint-setup@v2
- name: 🛠️ Run HLint
uses: haskell-actions/hlint-run@v2
with:
path: simulation/
fail-on: warning
simulation-fourmolu:
name: "simulation: Check with fourmolu"
runs-on: ubuntu-22.04
steps:
- name: 📥 Checkout repository
uses: actions/checkout@v4
- name: 🛠️ Run fourmolu
uses: haskell-actions/run-fourmolu@v11
with:
version: "0.15.0.0"