Skip to content

Instantly share code, notes, and snippets.

@creichert
Last active November 24, 2019 14:35
Show Gist options
  • Save creichert/efb84716d628c431e827ff95289b6aa7 to your computer and use it in GitHub Desktop.
Save creichert/efb84716d628c431e827ff95289b6aa7 to your computer and use it in GitHub Desktop.
Circle CI 2.0 configuration for Haskell Stack (multiple GHC & LTS versions)
version: 2
workflows:
version: 2
build-and-test:
jobs:
- build
- build-nightly
- build-lts-11
- build-lts-10
- build-lts-9
references:
# Default branch / master
default_cache_key: &default_cache_key
v2-stack-{{ checksum "stack.yaml" }}-{{ checksum "package.yaml" }}
restore_stack_default_cache: &restore_stack_default_cache
restore_cache:
keys:
- *default_cache_key
- v2-stack-{{ checksum "stack.yaml" }}
- v2-stack
save_stack_default_cache: &save_stack_default_cache
save_cache:
key: *default_cache_key
paths:
- ~/.stack
# nightly
nightly_cache_key: &nightly_cache_key
v2-stack-nightly-{{ checksum "package.yaml" }}
restore_stack_nightly_cache: &restore_stack_nightly_cache
restore_cache:
keys:
- *nightly_cache_key
- v2-stack
save_stack_nightly_cache: &save_stack_nightly_cache
save_cache:
key: *nightly_cache_key
paths:
- ~/.stack
# lts-11
lts-11_cache_key: &lts-11_cache_key
v2-stack-lts-11-{{ checksum "package.yaml" }}
restore_stack_lts-11_cache: &restore_stack_lts-11_cache
restore_cache:
keys:
- *lts-11_cache_key
- v2-stack
save_stack_lts-11_cache: &save_stack_lts-11_cache
save_cache:
key: *lts-11_cache_key
paths:
- ~/.stack
# lts-10
lts-10_cache_key: &lts-10_cache_key
v2-stack-lts-10-{{ checksum "package.yaml" }}
restore_stack_lts-10_cache: &restore_stack_lts-10_cache
restore_cache:
keys:
- *lts-10_cache_key
- v2-stack
save_stack_lts-10_cache: &save_stack_lts-10_cache
save_cache:
key: *lts-10_cache_key
paths:
- ~/.stack
# lts-9
lts-9_cache_key: &lts-9_cache_key
v2-stack-lts-9-{{ checksum "package.yaml" }}
restore_stack_lts-9_cache: &restore_stack_lts-9_cache
restore_cache:
keys:
- *lts-9_cache_key
- v2-stack
save_stack_lts-9_cache: &save_stack_lts-9_cache
save_cache:
key: *lts-9_cache_key
paths:
- ~/.stack
jobs:
build:
docker:
- image: fpco/stack-build:lts-12.7
environment:
STACK_ARGS: "--jobs 2"
steps:
- checkout
- *restore_stack_default_cache
- run: stack setup $STACK_ARGS
- run: stack install $STACK_ARGS --only-dependencies --test --no-run-tests
- *save_stack_default_cache
- run: stack test --no-terminal
build-nightly:
docker:
- image: fpco/stack-build:latest
environment:
STACK_ARGS: "--resolver nightly --no-terminal --jobs 2"
steps:
- checkout
- *restore_stack_nightly_cache
- run: stack setup $STACK_ARGS
- run: stack install $STACK_ARGS --only-dependencies --test --no-run-tests
- *save_stack_nightly_cache
- run: stack test $STACK_ARGS
build-lts-11:
docker:
- image: fpco/stack-build:lts-11
environment:
STACK_ARGS: "--resolver lts-11 --no-terminal --jobs 2"
steps:
- checkout
- *restore_stack_lts-11_cache
- run: stack setup $STACK_ARGS
- run: stack install $STACK_ARGS --only-dependencies --test --no-run-tests
- *save_stack_lts-11_cache
- run: stack test $STACK_ARGS
build-lts-10:
docker:
- image: fpco/stack-build:lts-10
environment:
STACK_ARGS: "--resolver lts-10 --no-terminal --jobs 2"
steps:
- checkout
- *restore_stack_lts-10_cache
- run: stack setup $STACK_ARGS
- run: stack install $STACK_ARGS --only-dependencies --test --no-run-tests
- *save_stack_lts-10_cache
- run: stack test $STACK_ARGS
build-lts-9:
docker:
- image: fpco/stack-build:lts-9
environment:
STACK_ARGS: "--resolver lts-9 --no-terminal --jobs 2"
steps:
- checkout
- *restore_stack_lts-9_cache
- run: stack setup $STACK_ARGS
- run: stack install $STACK_ARGS --only-dependencies --test --no-run-tests
- *save_stack_lts-9_cache
- run: stack test $STACK_ARGS
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment