Continuous Integration and Continuous Deployment with Haskell

Circle supports building Haskell applications with GHC and Cabal. Before each build we look at your repository and infer commands to run, so most setups should work automatically.

If you’d like something specific that’s not being inferred, you can say so with a configuration file checked into the root of your repository.


We have many versions of GHC pre-installed on Ubuntu 12.04.

If you’d like a particular version, you can specify it in your circle.yml:

    version: 7.8.3

Dependencies & Tests

If we find a Cabal file at the root of your repository, we install your dependencies and run cabal build and cabal test. You can customize this easily in your circle.yml by setting the override, pre, and post properties in the dependencies and test sections.

    - cabal bench

Circle can cache directories in between builds to avoid unnecessary work. If you use Cabal, our inferred commands build your project in a Cabal sandbox and cache the sandbox. This helps your build run as quickly as possible.


Circle supports saving and uploading arbitrary build artifacts.

If you’d like to automatically generate documentation with Haddock, you can put something like this in your circle.yml:

    - cabal haddock --builddir=$CIRCLE_ARTIFACTS


Our Haskell troubleshooting documentation has information about the following issues:

If you have any further trouble, please contact us. We’ll be happy to help!