@@ -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
|
||||
Reference in New Issue
Block a user