git.iko.soy/typeable/rollbar-hs
on master help sign in
Separate the compile stage from testing

Might be overkill for this small of a workflow. Good to get practice with circleci and Make.

commit5deb32b2c07c2e82f2289cae51e3ac6c763756cd authorjoneshf <jones3.hardy@gmail.com> dateSun 29 Jul 2018, 12:19 (8 years ago) parent3b0f694
2 files changed+48−23
.circleci/config.yml+29−11 Makefile+19−12
.circleci/config.yml+29−11
@@ -1,6 +1,6 @@
11version: 2
22jobs:
3− sdist:
3+ compile:
44 docker:
55 - image: haskell:8.2.2
66 steps:
@@ -12,10 +12,20 @@ jobs:
1212 - v1-stack-
1313 name: Restoring stack cache
1414 - run:
15− name: Build sdist
16− command: make sdist
15+ name: Compile
16+ command: make build
17+ - presist_to_workspace:
18+ root: dist
19+ paths:
20+ - '*'
21+ - save_cache:
22+ key: v1-stack-{{ checksum "package.yaml" }}-{{ checksum "stack.yaml" }}
23+ name: Caching stack
24+ paths:
25+ - .stack-work
26+ - /root/.stack
1727
18− test:
28+ sdist:
1929 docker:
2030 - image: haskell:8.2.2
2131 steps:
@@ -26,19 +36,27 @@ jobs:
2636 - v1-stack-{{ checksum "package.yaml" }}-
2737 - v1-stack-
2838 name: Restoring stack cache
39+ - run:
40+ name: Build sdist
41+ command: make sdist
42+
43+ test:
44+ docker:
45+ - image: haskell:8.2.2
46+ steps:
47+ - checkout
48+ - attach_workspace:
49+ at: dist
2950 - run:
3051 name: Test
3152 command: make test
32− - save_cache:
33− key: v1-stack-{{ checksum "package.yaml" }}-{{ checksum "stack.yaml" }}
34− name: Caching stack
35− paths:
36− - .stack-work
37− - /root/.stack
3853
3954workflows:
4055 version: 2
4156 base:
4257 jobs:
58+ - compile
4359 - sdist
44− - test
60+ - test:
61+ requires:
62+ - compile
Makefile+19−12
@@ -8,29 +8,37 @@ STACK_WORK ?= .stack-work
88VERBOSITY ?= warn
99
1010CABAL_FILE := $(PROJECT_NAME).cabal
11+DOC_TEST := $(DIST)/build/doc-test/doc-test
1112GHCID := $(BIN)/ghcid
1213STACK_FLAGS := --verbosity $(VERBOSITY)
1314
14−.DEFAULT_GOAL := build
15+.DEFAULT_GOAL := $(EMPTY)/build
1516
1617$(BIN) $(DIST) $(EMPTY):
1718 mkdir -p $@
1819
19−$(EMPTY)/stack-setup: | $(EMPTY)
20− $(STACK) $(STACK_FLAGS) setup
21− touch $@
22−
23−$(GHCID): $(EMPTY)/stack-setup | $(BIN)
24− $(STACK) $(STACK_FLAGS) install ghcid --local-bin-path $(BIN)
25−
2620$(CABAL_FILE): package.yaml
2721 # `stack` has no way to run `hpack` directly.
2822 # We can run `hpack` indirectly with little overhead.
2923 $(STACK) $(STACK_FLAGS) build --dry-run
3024
31−.PHONY: build
32−build: $(EMPTY)/stack-setup
25+$(DOC_TEST): $(EMPTY)/build golden/**/*.json
26+ $@
27+
28+$(EMPTY)/build: $(EMPTY)/stack-setup README.md Setup.hs package.yaml stack.yaml src/**/*.hs test/**/*.hs | $(DIST)
3329 $(STACK) $(STACK_FLAGS) build --no-run-tests --test
30+ cp -R $$($(STACK) $(STACK_FLAGS) path --dist-dir)/build $(DIST)/build
31+ touch $@
32+
33+$(EMPTY)/doc-test: $(EMPTY)/build
34+ touch $@
35+
36+$(EMPTY)/stack-setup: | $(EMPTY)
37+ $(STACK) $(STACK_FLAGS) setup
38+ touch $@
39+
40+$(GHCID): $(EMPTY)/stack-setup | $(BIN)
41+ $(STACK) $(STACK_FLAGS) install ghcid --local-bin-path $(BIN)
3442
3543.PHONY: cabal-check
3644cabal-check: $(CABAL_FILE)
@@ -49,8 +57,7 @@ sdist: cabal-check | $(DIST)
4957 $(CABAL) sdist
5058
5159.PHONY: test
52−test: build
53− $(STACK) $(STACK_FLAGS) test
60+test: $(DOC_TEST)
5461
5562.PHONY: upload-hackage
5663upload-hackage: sdist