Implement CircleCI as an alternative for Travis.
This commit is contained in:
Thomas Pelletier
2019-03-12 21:57:14 -07:00
committed by GitHub
parent bef2d19cb0
commit 690ec00a4b
+130
View File
@@ -0,0 +1,130 @@
version: 2.1
executors:
golang:
parameters:
version:
type: string
docker:
- image: circleci/golang:<< parameters.version >>
commands:
get_deps:
description: "Get go dependencies"
steps:
- run: go get github.com/jstemmer/go-junit-report
- run: go get github.com/davecgh/go-spew/spew
- run: go get gopkg.in/yaml.v2
- run: go get github.com/BurntSushi/toml
run_test:
description: "Run unit tests for a go module"
parameters:
test_name:
type: string
module:
type: string
coverage:
default: false
type: boolean
steps:
- run:
name: "Run tests for <<parameters.test_name>>"
command: |
TEST_DIR="/tmp/test-results/<<parameters.test_name>>"
mkdir -p ${TEST_DIR}
trap "go-junit-report </tmp/test-results/go-test.out > ${TEST_DIR}/go-test-report.xml" EXIT
go test <<parameters.module>> -race -v \
<<# parameters.coverage >>-coverprofile=/tmp/workspace/coverage.txt -covermode=atomic<</ parameters.coverage >> \
| tee /tmp/test-results/go-test.out
jobs:
go:
parameters:
version:
type: string
executor:
name: golang
version: "<<parameters.version>>"
working_directory: /go/src/github.com/pelletier/go-toml
steps:
- checkout
- run: mkdir -p /tmp/workspace
- run: go fmt ./...
- get_deps
- run_test:
test_name: "go-toml"
module: "github.com/pelletier/go-toml"
coverage: true
- run_test:
test_name: "tomljson"
module: "github.com/pelletier/go-toml/cmd/tomljson"
- run_test:
test_name: "tomll"
module: "github.com/pelletier/go-toml/cmd/tomll"
- run_test:
test_name: "query"
module: "github.com/pelletier/go-toml/query"
- store_test_results:
path: /tmp/test-results
codecov:
docker:
- image: "circleci/golang:1.12"
steps:
- attach_workspace:
at: /tmp/workspace
- run:
name: "upload to codecov"
working_directory: /tmp/workspace
command: |
curl https://codecov.io/bash > codecov.sh
bash codecov.sh -v
workflows:
version: 2.1
build:
jobs:
- go:
name: "go1_11"
version: "1.11"
- go:
name: "go1_12"
version: "1.12"
post-steps:
- run: go tool cover -html=/tmp/workspace/coverage.txt -o coverage.html
- store_artifacts:
path: /tmp/workspace/coverage.txt
- store_artifacts:
path: coverage.html
- persist_to_workspace:
root: /tmp/workspace
paths:
- coverage.txt
- go:
name: "gotip"
version: "1.12" # use as base
pre-steps:
- restore_cache:
keys:
- go-tip-source
- run:
name: "Compile go tip"
command: |
if [ ! -d "/tmp/go" ]; then
git clone https://go.googlesource.com/go /tmp/go
fi
cd /tmp/go
git checkout master
git pull
cd src
./make.bash
echo 'export PATH="/tmp/go/bin:$PATH"' >> $BASH_ENV
- run: go version
- save_cache:
key: go-tip-source
paths:
- "/tmp/go"
- codecov:
requires:
- go1_11
- go1_12