lazydocker/.circleci/config.yml
2019-11-11 12:40:56 +01:00

100 lines
2.8 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.12":
<<: *env-shared
<<: *build-shared
docker:
- image: circleci/golang:1.12
"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.12
steps:
- checkout
#- run:
# name: Install snapcraft
# command: |
# ./.circleci/install_snapcraft.sh
#- run:
# name: Login to snapcraft
# # if you ever lose this, you can recreate it via
# # `snapcraft export-login snapcraft.login && base64 snapcraft.login` and then chuck that
# # in circle ci as the SNAPCRAFT_LOGIN_FILE env variable
# # You'll need your ubuntu one password
# command: |
# echo $SNAPCRAFT_LOGIN_FILE | base64 --decode --ignore-garbage > snapcraft.login
# snapcraft login --with snapcraft.login
# rm snapcraft.login
- 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.12"
- "golang:latest"
release:
jobs:
- release:
filters:
tags:
only: /v[0-9]+(\.[0-9]+)*/
branches:
ignore: /.*/