--- - task: get-version code: grep "const version" cmd/dog/main.go | cut -d'"' -f2 register: DOG_VERSION - task: clean description: Clean compiled binaries code: rm -rf dist dog-* - task: test description: Run all tests runner: bash code: | diff <(echo -n) <(gofmt -s -d .) go vet ./... go test -v -tags=integration ./... - task: build description: Build dog binary for current platform env: OUTPUT_PATH=dist/current pre: clean code: | go build \ -ldflags "-s -w" \ -o "${OUTPUT_PATH}/dog" \ cmd/dog/*.go - task: install description: Install custom build to local system env: - BINARY_PATH=dist/current - INSTALL_PATH=/usr/local/bin code: sudo cp -v ${BINARY_PATH}/dog ${INSTALL_PATH}/dog - task: build-all description: Build dog binary for all platforms pre: - clean - test env: - XC_ARCH=386 amd64 arm - XC_OS=linux darwin freebsd openbsd netbsd solaris code: | go get -u github.com/mitchellh/gox gox \ -os="${XC_OS}" \ -arch="${XC_ARCH}" \ -ldflags "-s -w" \ -output "dist/{{.OS}}_{{.Arch}}/dog" \ ./cmd/dog/ - task: release description: Put all dist binaries in a compressed file pre: - build-all - get-version code: | mv -v dist dog-${DOG_VERSION} tar zcvf dog-${DOG_VERSION}.tar.gz dog-${DOG_VERSION} - task: release-docker description: Build and push Docker container pre: get-version code: | docker build -t xavisb/dog:${DOG_VERSION} . docker tag xavisb/dog:${DOG_VERSION} xavisb/dog:latest docker push xavisb/dog:${DOG_VERSION} docker push xavisb/dog:latest