diff --git a/.circleci/config.yml b/.circleci/config.yml index 26aa8591d..1aef758d2 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -52,6 +52,40 @@ build-distro-bin: &build-distro-bin key: v1-{{ .Environment.CIRCLE_JOB }}-dependencies-{{ checksum "postgrest.cabal" }}-{{ checksum "stack.yaml" }} jobs: + build-cache: + docker: + - image: circleci/buildpack-deps:trusty + steps: + - checkout + - restore_cache: + keys: + - v1-stack-dependencies-{{ checksum "postgrest.cabal" }}-{{ checksum "stack.yaml" }} + - run: + name: install stack & dependencies + command: | + curl -L https://github.com/commercialhaskell/stack/releases/download/v2.1.3/stack-2.1.3-linux-x86_64.tar.gz | tar zx -C /tmp + sudo mv /tmp/stack-2.1.3-linux-x86_64/stack /usr/bin + sudo apt-get update + sudo apt-get install -y libgmp-dev + sudo apt-get install -y --only-upgrade binutils + sudo apt-get install -y postgresql-client + stack setup + - run: + name: build src and tests dependencies + command: | + stack build --fast -j1 --only-dependencies + stack build --fast --test --no-run-tests --only-dependencies + - save_cache: + paths: + - "~/.stack" + - ".stack-work" + key: v1-stack-dependencies-{{ checksum "postgrest.cabal" }}-{{ checksum "stack.yaml" }} + - run: + name: build src and tests + command: | + stack build --fast -j1 + stack build --fast --test --no-run-tests + style: docker: - image: circleci/buildpack-deps:trusty @@ -122,11 +156,6 @@ jobs: command: | stack build --fast -j1 --only-dependencies stack build --fast --test --no-run-tests --only-dependencies - - save_cache: - paths: - - "~/.stack" - - ".stack-work" - key: v1-stack-dependencies-{{ checksum "postgrest.cabal" }}-{{ checksum "stack.yaml" }} - run: name: build src and tests command: | @@ -359,6 +388,10 @@ workflows: version: 2 build-test-release: jobs: + - build-cache: + filters: + tags: + only: /v[0-9]+(\.[0-9]+)*/ - style: filters: tags: @@ -367,22 +400,32 @@ workflows: filters: tags: only: /v[0-9]+(\.[0-9]+)*/ + requires: + - build-cache - build-test-9.6: filters: tags: only: /v[0-9]+(\.[0-9]+)*/ + requires: + - build-cache - build-test-10: filters: tags: only: /v[0-9]+(\.[0-9]+)*/ + requires: + - build-cache - build-test-11: filters: tags: only: /v[0-9]+(\.[0-9]+)*/ + requires: + - build-cache - build-test-12: filters: tags: only: /v[0-9]+(\.[0-9]+)*/ + requires: + - build-cache - build-prof-test: filters: tags: