aboutsummaryrefslogtreecommitdiff
path: root/.circleci
diff options
context:
space:
mode:
authorJohn MacFarlane <jgm@berkeley.edu>2019-01-25 07:00:28 -0800
committerJohn MacFarlane <jgm@berkeley.edu>2019-01-25 07:00:28 -0800
commitcbd8662b631c780b196e381e1bc1282e4d2be4e8 (patch)
tree8fa2ab5d446f0d812f1024b4565eb71778f36ee6 /.circleci
parent1c8097136b0b78c6e064c564a9364a4d825fd952 (diff)
downloadpandoc-cbd8662b631c780b196e381e1bc1282e4d2be4e8.tar.gz
Add .circleci config.
Diffstat (limited to '.circleci')
-rw-r--r--.circleci/config.yml123
1 files changed, 123 insertions, 0 deletions
diff --git a/.circleci/config.yml b/.circleci/config.yml
new file mode 100644
index 000000000..b1a90c37c
--- /dev/null
+++ b/.circleci/config.yml
@@ -0,0 +1,123 @@
+version: "2.1"
+
+env: &env
+ environment:
+ LC_ALL: "C.UTF-8"
+ GHC_OPTS: "-O0 -Wall"
+ docker:
+ - image: fpco/stack-build:lts
+
+#-----------------------------------------------------------------------------
+# Common utility stuff, not to be modified usually
+#-----------------------------------------------------------------------------
+
+preinstall: &preinstall
+ run: |
+ echo 'export PATH=/opt/cabal/bin:$PATH' >> $BASH_ENV
+ source $BASH_ENV
+ apt-get update
+
+restore: &restore
+ # Needs to happen after installing ca-certificates
+ restore_cache:
+ key: v1-{{ .Environment.CIRCLE_JOB }}-{{ .Branch }}
+
+save: &save
+ save_cache:
+ key: v1-{{ .Environment.CIRCLE_JOB }}-{{ .Branch }}
+ paths:
+ - ~/.cabal
+ - ~/.ghc
+ - ~/.local
+ - ~/.stack
+
+commands:
+ cabal_build:
+ parameters:
+ ghcversion:
+ type: string
+ steps:
+ - checkout
+ - *preinstall
+ - *restore
+ - run:
+ name: install ghc
+ command: apt-get install -y ghc-<< paramaters.ghcversion >>
+ - run: |
+ set -e
+ apt-get install -y cabal-install-2.4
+ cabal v2-update
+ TMPDIR=`mktemp -d -t circleci.XXXXXXX`
+ cabal v2-sdist --output-dir=${TMPDIR}
+ cd ${TMPDIR}
+ tar xvzf *.tar.gz
+ cd *
+ cabal v2-build -j2 --dependencies-only --enable-tests --ghc-options="${GHC_OPTS}"
+ cabal v2-test --ghc-options="${GHC_OPTS}" 2>build.log
+ cat build.log
+ # fail if we had warnings; this is to work around the fact
+ # that cabal v2 doesn't allow us to use -Werror for just local build:
+ # https://github.com/haskell/cabal/issues/4247
+ ! grep -q "warning:" build.log
+ cabal v2-haddock --ghc-options="${GHC_OPTS}"
+ cabal check
+ - *save
+
+#-----------------------------------------------------------------------------
+# Build matrix
+#-----------------------------------------------------------------------------
+
+jobs:
+ cabal-ghc-8_6_3:
+ <<: *env
+ steps:
+ - cabal_build:
+ ghcversion: 8.6.3
+
+ cabal-ghc-8_4_4:
+ <<: *env
+ steps:
+ - cabal_build:
+ ghcversion: 8.4.4
+
+ cabal-ghc-8_2_2:
+ <<: *env
+ steps:
+ - cabal_build:
+ ghcversion: 8.2.2
+
+ cabal-ghc-8_0_2:
+ <<: *env
+ steps:
+ - cabal_build:
+ ghcversion: 8.0.2
+
+ cabal-ghc-7_10_3:
+ <<: *env
+ steps:
+ - cabal_build:
+ ghcversion: 7.10.3
+
+ stack-ghc-8_6:
+ <<: *env
+ steps:
+ - checkout
+ - *preinstall
+ - *restore
+ - run: |
+ set -e
+ apt-get install -y ghc-8.6.3
+ stack update
+ stack test --system-ghc --ghc-options="${GHC_OPTS} -Werror" .
+ - *save
+
+workflows:
+ version: 2
+ build:
+ jobs:
+ - cabal-ghc-8_6_3
+ - cabal-ghc-8_4_4
+ - cabal-ghc-8_2_2
+ - cabal-ghc-8_0_2
+ - cabal-ghc-7_10_3
+ - stack-ghc-8_6