Merge pull request #8 from joneshf/circleci

More CI improvements
This commit is contained in:
Hardy Jones 2018-07-29 13:49:06 -07:00 committed by GitHub
commit 6619a25bc9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 139 additions and 25 deletions

View File

@ -1,38 +1,74 @@
version: 2
jobs:
build:
compile:
docker:
- image: haskell:8.2.2
steps:
- checkout
- restore_cache:
keys:
- v1-stack-root-{{ checksum "package.yaml" }}-{{ checksum "stack.yaml" }}
- v1-stack-root-{{ checksum "package.yaml" }}-
- v1-stack-root-
name: Restoring stack root cache
- restore_cache:
keys:
- v1-stack-work-{{ checksum "package.yaml" }}-{{ checksum "stack.yaml" }}
- v1-stack-work-{{ checksum "package.yaml" }}-
- v1-stack-work-
name: Restoring stack work cache
- v1-stack-{{ checksum "package.yaml" }}-{{ checksum "stack.yaml" }}
- v1-stack-{{ checksum "package.yaml" }}-
- v1-stack-
name: Restoring stack cache
- run:
name: Setup
command: stack setup
- run:
name: Build
command: stack build --no-run-tests --test
- run:
name: Test
command: stack test
- save_cache:
key: v1-stack-root-{{ checksum "package.yaml" }}-{{ checksum "stack.yaml" }}
name: Caching stack root
name: Compile
command: make build
- persist_to_workspace:
root: .
paths:
- /root/.stack
- dist
- save_cache:
key: v1-stack-work-{{ checksum "package.yaml" }}-{{ checksum "stack.yaml" }}
name: Caching stack work
key: v1-stack-{{ checksum "package.yaml" }}-{{ checksum "stack.yaml" }}
name: Caching stack
paths:
- .stack-work
- /root/.stack
doc-test:
docker:
- image: haskell:8.2.2
steps:
- checkout
- attach_workspace:
at: .
- run:
name: Doc test
command: make test-doc-test
for-github:
docker:
- image: alpine
steps:
- run:
name: Passed
command: echo passed
sdist:
docker:
- image: haskell:8.2.2
steps:
- checkout
- restore_cache:
keys:
- v1-stack-{{ checksum "package.yaml" }}-{{ checksum "stack.yaml" }}
- v1-stack-{{ checksum "package.yaml" }}-
- v1-stack-
name: Restoring stack cache
- run:
name: Build sdist
command: make sdist
workflows:
version: 2
base:
jobs:
- compile
- for-github:
requires:
- doc-test
- sdist
- sdist
- doc-test:
requires:
- compile

2
.gitignore vendored
View File

@ -1,6 +1,8 @@
### Project specific ###
*.cabal
.make
bin
# Created by https://www.gitignore.io/api/vim,osx,linux,macos,emacs,windows,haskell,visualstudiocode

73
Makefile Normal file
View File

@ -0,0 +1,73 @@
BIN ?= bin
CABAL ?= cabal
DIST ?= dist
EMPTY ?= .make
PROJECT_NAME ?= rollbar-hs
STACK ?= stack
STACK_WORK ?= .stack-work
VERBOSITY ?= warn
CABAL_FILE := $(PROJECT_NAME).cabal
DOC_TEST := $(DIST)/build/doc-test/doc-test
GHCID := $(BIN)/ghcid
STACK_FLAGS := --verbosity $(VERBOSITY)
.DEFAULT_GOAL := build
$(BIN) $(DIST) $(EMPTY):
mkdir -p $@
$(CABAL_FILE): package.yaml
# `stack` has no way to run `hpack` directly.
# We can run `hpack` indirectly with little overhead.
$(STACK) $(STACK_FLAGS) build --dry-run
$(DOC_TEST):
rm -f $(EMPTY)/build
$(MAKE) $(EMPTY)/build
$(EMPTY)/build: $(EMPTY)/stack-setup README.md Setup.hs package.yaml stack.yaml src/**/*.hs test/**/*.hs | $(DIST)
$(STACK) $(STACK_FLAGS) build --no-run-tests --test
cp -R $$($(STACK) $(STACK_FLAGS) path --dist-dir)/build $(DIST)
touch $@
$(EMPTY)/stack-setup: | $(EMPTY)
$(STACK) $(STACK_FLAGS) setup
touch $@
$(GHCID): $(EMPTY)/stack-setup | $(BIN)
$(STACK) $(STACK_FLAGS) install ghcid --local-bin-path $(BIN)
.PHONT: build
build: $(EMPTY)/build
.PHONY: cabal-check
cabal-check: $(CABAL_FILE)
$(CABAL) check
.PHONY: clean
clean:
rm -f $(CABAL_FILE)
rm -fr $(BIN)
rm -fr $(DIST)
rm -fr $(EMPTY)
rm -fr $(STACK_WORK)
.PHONY: sdist
sdist: cabal-check | $(DIST)
$(CABAL) sdist
.PHONY: test
test: $(EMPTY)/build test-doc-test
.PHONY: test-doc-test
test-doc-test: $(DOC_TEST)
$<
.PHONY: upload-hackage
upload-hackage: sdist
@ $(CABAL) upload $(DIST)/$(PROJECT_NAME)-*.tar.gz
.PHONY: watch
watch: $(GHCID)
$(GHCID)

View File

@ -1,6 +1,9 @@
author: Hardy Jones
category: Web
copyright: 2018 Hardy Jones
description: |
Provides a type-safe encoding of the Rollbar API.
Also provides functions to communicate with the Rollbar API.
extra-source-files:
- README.md
github: joneshf/rollbar-hs