There was more interesting discussion over in
and I realized that the CI setup above contains two ideas that are pretty much orthogonal:
-
How the build matrix is generated.
Here, I am using a directory of
.cabal
config files (which can specify GHC versions, constrain dependencies, import Stackage package sets). -
That the plans from each build are collected and compared to the .cabal dependencies using
cabal-plan-bounds
.
But of course you can use the former without the latter, if you like that way of specifying your build matrix.
And you can use the latter without the former, if you create your build matrix differently – statically in .github/workflows
, dynamically from the tested-with
field in your Cabal file (using @Kleidukos’s get-tested
) , using cabal.haskell-ci
constraint sets, or any other way.