diff --git a/.circleci/config.yml b/.circleci/config.yml index a72b9e33..75d3ccaf 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,45 +1,44 @@ version: 2 + +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 -mod=vendor ./... + - run: + name: Compile project on every platform + command: | + go get github.com/mitchellh/gox + gox -mod=vendor -parallel 10 -os "linux freebsd" -osarch "darwin/i386 darwin/amd64" + - save_cache: + key: pkg-cache-{{ checksum "go.sum" }}-v5 + paths: + - ~/.cache/go-build + jobs: - build: + "golang:1.12": + <<: *build-shared docker: - image: circleci/golang:1.12 - environment: - GO111MODULE: "on" - working_directory: /go/src/github.com/jesseduffield/lazydocker - 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: | - ./test.sh - - run: - name: Push on codecov result - command: | - bash <(curl -s https://codecov.io/bash) - - run: - name: Compile project on every platform - command: | - go get github.com/mitchellh/gox - gox -mod=vendor -parallel 10 -os "linux freebsd" -osarch "darwin/i386 darwin/amd64" - - save_cache: - key: pkg-cache-{{ checksum "go.sum" }}-v5 - paths: - - ~/.cache/go-build - + "golang:latest": + <<: *build-shared + docker: + - image: circleci/golang:latest release: docker: - image: circleci/golang:1.12 - working_directory: /go/src/github.com/jesseduffield/lazydocker steps: - checkout - run: @@ -69,7 +68,8 @@ workflows: version: 2 build: jobs: - - build + - "golang:1.12" + - "golang:latest" release: jobs: - release: diff --git a/test.sh b/test.sh deleted file mode 100755 index 7e5a7128..00000000 --- a/test.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/usr/bin/env bash - -set -e -echo "" > coverage.txt - -use_go_test=false -if command -v gotest; then - use_go_test=true -fi - -for d in $( find ./* -maxdepth 10 ! -path "./vendor*" ! -path "./.git*" ! -path "./scripts*" -type d); do - if ls $d/*.go &> /dev/null; then - args="-race -coverprofile=profile.out -covermode=atomic $d" - if [ "$use_go_test" == true ]; then - gotest $args - else - go test -mod=vendor $args - fi - if [ -f profile.out ]; then - cat profile.out >> coverage.txt - rm profile.out - fi - fi -done