cosmos-sdk/.circleci/config.yml

169 lines
4.3 KiB
YAML
Raw Normal View History

2018-05-31 19:03:40 -07:00
version: 2
2018-03-20 16:55:55 -07:00
defaults: &defaults
working_directory: /go/src/github.com/cosmos/cosmos-sdk
docker:
2018-06-15 20:36:01 -07:00
- image: circleci/golang:1.10.3
2018-03-20 16:55:55 -07:00
environment:
GOBIN: /tmp/workspace/bin
jobs:
setup_dependencies:
<<: *defaults
steps:
- run: mkdir -p /tmp/workspace/bin
- run: mkdir -p /tmp/workspace/profiles
- checkout
- restore_cache:
keys:
- v2-pkg-cache
2018-03-20 16:55:55 -07:00
- run:
name: tools
command: |
export PATH="$GOBIN:$PATH"
make get_tools
- run:
name: dependencies
command: |
export PATH="$GOBIN:$PATH"
make get_vendor_deps
- run:
name: binaries
command: |
export PATH="$GOBIN:$PATH"
2018-04-18 10:23:47 -07:00
make install
2018-05-21 12:18:56 -07:00
make install_examples
2018-03-20 16:55:55 -07:00
- persist_to_workspace:
root: /tmp/workspace
paths:
- bin
- profiles
- save_cache:
key: v2-pkg-cache
2018-03-20 16:55:55 -07:00
paths:
- /go/pkg
- save_cache:
key: v2-tree-{{ .Environment.CIRCLE_SHA1 }}
2018-03-20 16:55:55 -07:00
paths:
- /go/src/github.com/cosmos/cosmos-sdk
2018-04-19 05:30:14 -07:00
lint:
<<: *defaults
parallelism: 4
steps:
- attach_workspace:
at: /tmp/workspace
- restore_cache:
key: v2-pkg-cache
2018-04-19 05:30:14 -07:00
- restore_cache:
key: v2-tree-{{ .Environment.CIRCLE_SHA1 }}
- run:
name: Get metalinter
command: |
export PATH="$GOBIN:$PATH"
go get -u github.com/tendermint/lint/golint
go get -u github.com/alecthomas/gometalinter
2018-04-19 05:30:14 -07:00
- run:
name: Lint source
command: |
export PATH="$GOBIN:$PATH"
gometalinter --disable-all --enable='golint' --vendor ./...
2018-05-02 20:07:05 -07:00
test_unit:
<<: *defaults
parallelism: 4
steps:
- attach_workspace:
at: /tmp/workspace
- restore_cache:
key: v2-pkg-cache
2018-05-02 20:07:05 -07:00
- restore_cache:
key: v2-tree-{{ .Environment.CIRCLE_SHA1 }}
2018-05-02 20:07:05 -07:00
- run:
name: Test unit
command: |
export PATH="$GOBIN:$PATH"
make test_unit
2018-05-31 14:45:07 -07:00
test_cli:
<<: *defaults
parallelism: 1
steps:
- attach_workspace:
at: /tmp/workspace
- restore_cache:
key: v2-pkg-cache
2018-05-31 14:45:07 -07:00
- restore_cache:
key: v2-tree-{{ .Environment.CIRCLE_SHA1 }}
2018-05-31 14:45:07 -07:00
- run:
name: Test cli
command: |
export PATH="$GOBIN:$PATH"
make test_cli
2018-03-20 16:55:55 -07:00
test_cover:
<<: *defaults
parallelism: 4
steps:
- attach_workspace:
at: /tmp/workspace
- restore_cache:
key: v2-pkg-cache
2018-03-20 16:55:55 -07:00
- restore_cache:
key: v2-tree-{{ .Environment.CIRCLE_SHA1 }}
2018-03-20 16:55:55 -07:00
- run:
name: Run tests
command: |
2018-04-18 10:23:47 -07:00
export PATH="$GOBIN:$PATH"
make install
for pkg in $(go list github.com/cosmos/cosmos-sdk/... | grep -v /vendor/ | grep -v github.com/cosmos/cosmos-sdk/cmd/gaia/cli_test | circleci tests split --split-by=timings); do
2018-03-20 16:55:55 -07:00
id=$(basename "$pkg")
go test -timeout 5m -race -coverprofile=/tmp/workspace/profiles/$id.out -covermode=atomic "$pkg"
done
- persist_to_workspace:
root: /tmp/workspace
paths:
- "profiles/*"
upload_coverage:
<<: *defaults
steps:
- attach_workspace:
at: /tmp/workspace
- restore_cache:
key: v2-tree-{{ .Environment.CIRCLE_SHA1 }}
2018-03-20 16:55:55 -07:00
- run:
name: gather
command: |
set -ex
echo "mode: atomic" > coverage.txt
for prof in $(ls /tmp/workspace/profiles/); do
tail -n +2 /tmp/workspace/profiles/"$prof" >> coverage.txt
done
- run:
name: upload
command: bash <(curl -s https://codecov.io/bash) -f coverage.txt
workflows:
version: 2
test-suite:
jobs:
- setup_dependencies
2018-04-19 05:30:14 -07:00
- lint:
requires:
- setup_dependencies
2018-05-31 15:39:42 -07:00
- test_cli:
2018-05-02 20:07:05 -07:00
requires:
- setup_dependencies
2018-05-31 15:39:42 -07:00
- test_unit:
2018-05-31 14:45:07 -07:00
requires:
- setup_dependencies
2018-03-20 16:55:55 -07:00
- test_cover:
requires:
- setup_dependencies
- upload_coverage:
requires:
- test_cover