neo-go/.circleci/config.yml
Roman Khimov 00a290de07 update minimum supported version of Go to 1.12
Go 1.11 is not supported upstream and it also breaks our precious VM for some
reason, so use better versions of Go. Fixes #384.
2019-09-10 20:30:54 +03:00

130 lines
2.9 KiB
YAML

version: 2.1
orbs:
codecov: codecov/codecov@1.0.5
executors:
go1_12:
docker:
- image: circleci/golang:1.12
environment:
GO111MODULE: "on"
go1_13:
docker:
- image: circleci/golang:1.13
environment:
GO111MODULE: "on"
commands:
gomod:
steps:
- restore_cache:
keys: [deps-]
- run:
name: Download go module dependencies
command: go mod download
- save_cache:
key: deps-{{ checksum "go.sum" }}-{{ checksum "go.sum" }}
paths: [/go/pkg/mod]
jobs:
lint:
working_directory: /go/src/github.com/CityOfZion/neo-go
executor: go1_13
steps:
- checkout
- gomod
- run:
name: go-lint
command: |
go get -u -v golang.org/x/lint/golint
golint -set_exit_status ./...
vet:
working_directory: /go/src/github.com/CityOfZion/neo-go
executor: go1_13
steps:
- checkout
- gomod
- run:
name: go-vet
command: go vet ./...
test_1_12:
working_directory: /go/src/github.com/CityOfZion/neo-go
executor: go1_12
steps:
- checkout
- gomod
- run: go test -v -race ./...
test_1_13:
working_directory: /go/src/github.com/CityOfZion/neo-go
executor: go1_13
steps:
- checkout
- gomod
- run: go test -v -race ./... -coverprofile=coverage.txt -covermode=atomic
- codecov/upload:
file: coverage.txt
build_cli:
working_directory: /go/src/github.com/CityOfZion/neo-go
executor: go1_12
steps:
- checkout
- gomod
- run: make build
- store_artifacts:
path: bin
destination: /
build_image:
working_directory: /go/src/github.com/CityOfZion/neo-go
executor: go1_12
docker:
- image: alpine
steps:
- run: apk update && apk add git make curl tar
- checkout
- setup_remote_docker
- run:
name: Install Docker client
command: |
set -x
VER="17.03.0-ce"
curl -L -o /tmp/docker-$VER.tgz https://get.docker.com/builds/Linux/x86_64/docker-$VER.tgz
tar -xz -C /tmp -f /tmp/docker-$VER.tgz
mv /tmp/docker/* /usr/bin
- run: make image
workflows:
version: 2
workflow:
jobs:
- vet:
filters:
tags:
only: v/[0-9]+\.[0-9]+\.[0-9]+/
- lint:
filters:
tags:
only: v/[0-9]+\.[0-9]+\.[0-9]+/
- test_1_12:
filters:
tags:
only: v/[0-9]+\.[0-9]+\.[0-9]+/
- test_1_13:
filters:
tags:
only: v/[0-9]+\.[0-9]+\.[0-9]+/
- build_cli:
filters:
tags:
only: v/[0-9]+\.[0-9]+\.[0-9]+/
- build_image:
requires:
- build_cli
filters:
tags:
only: v/[0-9]+\.[0-9]+\.[0-9]+/