git.iko.soy/typeable/rollbar-hs
on master help sign in
Merge pull request #8 from joneshf/circleci

More CI improvements

commit6619a25bc9ad3e8086be80b187770200506ee72a authorHardy Jones <jones3.hardy@gmail.com> dateSun 29 Jul 2018, 13:49 (8 years ago) parent9de1efa84612bc
4 files changed+139−25
.circleci/config.yml+61−25 .gitignore+2 Makefile+73 package.yaml+3
.circleci/config.yml+61−25
@@ -1,38 +1,74 @@
11version: 2
22jobs:
3− build:
3+ compile:
44 docker:
55 - image: haskell:8.2.2
66 steps:
77 - checkout
88 - restore_cache:
99 keys:
10− - v1-stack-root-{{ checksum "package.yaml" }}-{{ checksum "stack.yaml" }}
11− - v1-stack-root-{{ checksum "package.yaml" }}-
12− - v1-stack-root-
13− name: Restoring stack root cache
14− - restore_cache:
15− keys:
16− - v1-stack-work-{{ checksum "package.yaml" }}-{{ checksum "stack.yaml" }}
17− - v1-stack-work-{{ checksum "package.yaml" }}-
18− - v1-stack-work-
19− name: Restoring stack work cache
20− - run:
21− name: Setup
22− command: stack setup
10+ - v1-stack-{{ checksum "package.yaml" }}-{{ checksum "stack.yaml" }}
11+ - v1-stack-{{ checksum "package.yaml" }}-
12+ - v1-stack-
13+ name: Restoring stack cache
2314 - run:
24− name: Build
25− command: stack build --no-run-tests --test
26− - run:
27− name: Test
28− command: stack test
29− - save_cache:
30− key: v1-stack-root-{{ checksum "package.yaml" }}-{{ checksum "stack.yaml" }}
31− name: Caching stack root
15+ name: Compile
16+ command: make build
17+ - persist_to_workspace:
18+ root: .
3219 paths:
33− - /root/.stack
20+ - dist
3421 - save_cache:
35− key: v1-stack-work-{{ checksum "package.yaml" }}-{{ checksum "stack.yaml" }}
36− name: Caching stack work
22+ key: v1-stack-{{ checksum "package.yaml" }}-{{ checksum "stack.yaml" }}
23+ name: Caching stack
3724 paths:
3825 - .stack-work
26+ - /root/.stack
27+
28+ doc-test:
29+ docker:
30+ - image: haskell:8.2.2
31+ steps:
32+ - checkout
33+ - attach_workspace:
34+ at: .
35+ - run:
36+ name: Doc test
37+ command: make test-doc-test
38+
39+ for-github:
40+ docker:
41+ - image: alpine
42+ steps:
43+ - run:
44+ name: Passed
45+ command: echo passed
46+
47+ sdist:
48+ docker:
49+ - image: haskell:8.2.2
50+ steps:
51+ - checkout
52+ - restore_cache:
53+ keys:
54+ - v1-stack-{{ checksum "package.yaml" }}-{{ checksum "stack.yaml" }}
55+ - v1-stack-{{ checksum "package.yaml" }}-
56+ - v1-stack-
57+ name: Restoring stack cache
58+ - run:
59+ name: Build sdist
60+ command: make sdist
61+
62+workflows:
63+ version: 2
64+ base:
65+ jobs:
66+ - compile
67+ - for-github:
68+ requires:
69+ - doc-test
70+ - sdist
71+ - sdist
72+ - doc-test:
73+ requires:
74+ - compile
.gitignore+2
@@ -1,6 +1,8 @@
11### Project specific ###
22
33*.cabal
4+.make
5+bin
46
57# Created by https://www.gitignore.io/api/vim,osx,linux,macos,emacs,windows,haskell,visualstudiocode
68
Makefilenew file+73
@@ -0,0 +1,73 @@
1+BIN ?= bin
2+CABAL ?= cabal
3+DIST ?= dist
4+EMPTY ?= .make
5+PROJECT_NAME ?= rollbar-hs
6+STACK ?= stack
7+STACK_WORK ?= .stack-work
8+VERBOSITY ?= warn
9+
10+CABAL_FILE := $(PROJECT_NAME).cabal
11+DOC_TEST := $(DIST)/build/doc-test/doc-test
12+GHCID := $(BIN)/ghcid
13+STACK_FLAGS := --verbosity $(VERBOSITY)
14+
15+.DEFAULT_GOAL := build
16+
17+$(BIN) $(DIST) $(EMPTY):
18+ mkdir -p $@
19+
20+$(CABAL_FILE): package.yaml
21+ # `stack` has no way to run `hpack` directly.
22+ # We can run `hpack` indirectly with little overhead.
23+ $(STACK) $(STACK_FLAGS) build --dry-run
24+
25+$(DOC_TEST):
26+ rm -f $(EMPTY)/build
27+ $(MAKE) $(EMPTY)/build
28+
29+$(EMPTY)/build: $(EMPTY)/stack-setup README.md Setup.hs package.yaml stack.yaml src/**/*.hs test/**/*.hs | $(DIST)
30+ $(STACK) $(STACK_FLAGS) build --no-run-tests --test
31+ cp -R $$($(STACK) $(STACK_FLAGS) path --dist-dir)/build $(DIST)
32+ touch $@
33+
34+$(EMPTY)/stack-setup: | $(EMPTY)
35+ $(STACK) $(STACK_FLAGS) setup
36+ touch $@
37+
38+$(GHCID): $(EMPTY)/stack-setup | $(BIN)
39+ $(STACK) $(STACK_FLAGS) install ghcid --local-bin-path $(BIN)
40+
41+.PHONT: build
42+build: $(EMPTY)/build
43+
44+.PHONY: cabal-check
45+cabal-check: $(CABAL_FILE)
46+ $(CABAL) check
47+
48+.PHONY: clean
49+clean:
50+ rm -f $(CABAL_FILE)
51+ rm -fr $(BIN)
52+ rm -fr $(DIST)
53+ rm -fr $(EMPTY)
54+ rm -fr $(STACK_WORK)
55+
56+.PHONY: sdist
57+sdist: cabal-check | $(DIST)
58+ $(CABAL) sdist
59+
60+.PHONY: test
61+test: $(EMPTY)/build test-doc-test
62+
63+.PHONY: test-doc-test
64+test-doc-test: $(DOC_TEST)
65+ $<
66+
67+.PHONY: upload-hackage
68+upload-hackage: sdist
69+ @ $(CABAL) upload $(DIST)/$(PROJECT_NAME)-*.tar.gz
70+
71+.PHONY: watch
72+watch: $(GHCID)
73+ $(GHCID)
package.yaml+3
@@ -1,6 +1,9 @@
11author: Hardy Jones
22category: Web
33copyright: 2018 Hardy Jones
4+description: |
5+ Provides a type-safe encoding of the Rollbar API.
6+ Also provides functions to communicate with the Rollbar API.
47extra-source-files:
58 - README.md
69github: joneshf/rollbar-hs