You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
87 lines
2.2 KiB
YAML
87 lines
2.2 KiB
YAML
version: 2
|
|
|
|
# global environment variables
|
|
# '& ' syntax is a YAML thing for creating referenceable documents
|
|
env-shared: &env-shared
|
|
environment:
|
|
GOFLAGS: "-mod=vendor"
|
|
|
|
# build steps shared across different jobs
|
|
build-shared: &build-shared
|
|
steps:
|
|
- checkout
|
|
- run:
|
|
name: Run gofmt -s
|
|
command: |
|
|
if [ $(find . ! -path "./vendor/*" -name "*.go" -exec gofmt -s -d {} \;|wc -l) -gt 0 ]; then
|
|
find . ! -path "./vendor/*" -name "*.go" -exec gofmt -s -d {} \;
|
|
exit 1;
|
|
fi
|
|
- restore_cache:
|
|
keys:
|
|
- pkg-cache-{{ checksum "go.sum" }}-v5
|
|
- run:
|
|
name: Run tests
|
|
command: |
|
|
go test -v ./...
|
|
- run:
|
|
name: Get gox
|
|
# -mod=vendor doesn't work with go get while in source tree with go.mod in it
|
|
working_directory: "/tmp"
|
|
command: |
|
|
go get github.com/mitchellh/gox
|
|
- run:
|
|
name: Compile project on every platform
|
|
command: |
|
|
gox -parallel 10 -os "linux freebsd" -osarch "darwin/i386 darwin/amd64 windows/i386 windows/amd64"
|
|
- save_cache:
|
|
key: pkg-cache-{{ checksum "go.sum" }}-v5
|
|
paths:
|
|
- ~/.cache/go-build
|
|
|
|
jobs:
|
|
# matrix build jobs run on every commit
|
|
# building on versioned Go and the latest one
|
|
# '<<: *' syntax is a YAML thing for including documents
|
|
"golang:1.17":
|
|
<<: *env-shared
|
|
<<: *build-shared
|
|
docker:
|
|
- image: circleci/golang:1.17
|
|
"golang:latest":
|
|
<<: *env-shared
|
|
<<: *build-shared
|
|
docker:
|
|
- image: circleci/golang:latest
|
|
# release job run only when a commit is tagged
|
|
release:
|
|
<<: *env-shared
|
|
docker:
|
|
- image: circleci/golang:1.17
|
|
steps:
|
|
- checkout
|
|
- run:
|
|
name: Run gorelease
|
|
command: |
|
|
curl -sL https://git.io/goreleaser | bash
|
|
- run:
|
|
name: Update docs
|
|
command: |
|
|
./.circleci/update_docs.sh
|
|
|
|
workflows:
|
|
version: 2
|
|
build:
|
|
jobs:
|
|
# build matrix
|
|
- "golang:1.17"
|
|
- "golang:latest"
|
|
release:
|
|
jobs:
|
|
- release:
|
|
filters:
|
|
tags:
|
|
only: /v[0-9]+(\.[0-9]+)*/
|
|
branches:
|
|
ignore: /.*/
|