diff --git a/.travis.yml b/.travis.yml index 673cf0a7f..382a3d65a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,20 +11,39 @@ env: - GOARCH=386 ENTERPRISE=1 - GOARCH=amd64 - GOARCH=amd64 ENTERPRISE=1 +cache: + directories: + vendor install: - - make install-dep vendor -script: - - make test -before_deploy: - - pip install awscli --user `whoami` -deploy: - - provider: script - script: make prerelease-upload GOOS=linux GOARCH=amd64 - skip_cleanup: true - on: - all_branches: true + - make -B install-dep vendor +script: make test +jobs: + include: + - stage: metalinter + install: + - make -B install-dep vendor + - go get -u github.com/alecthomas/gometalinter + - gometalinter --install + script: make metalinter + env: + - GOARCH=amd64 + - stage: deploy + script: skip go: "1.10" - condition: $GOARCH = amd64 + env: + - GOARCH=amd64 + deploy: + - provider: script + script: pip install awscli --user `whoami` && make -B prerelease + skip_cleanup: true + on: + all_branches: true + repo: pilosa/pilosa + tags: false +stages: + - metalinter + - test + - deploy matrix: # Excluding or allowing failures on non-primary matrix configurations due to long running times. fast_finish: true diff --git a/Makefile b/Makefile index 1e4046bbc..6c50a873f 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -.PHONY: build check-clean clean cover cover-viz default docker docker-build docker-test generate generate-protoc generate-pql install install-build-deps install-dep install-protoc install-protoc-gen-gofast install-peg prerelease prerelease-build prerelease-upload release release-build require-dep require-protoc require-protoc-gen-gofast require-peg test +.PHONY: build check-clean clean cover cover-viz default docker docker-build docker-test generate generate-protoc generate-pql install install-build-deps install-dep install-protoc install-protoc-gen-gofast install-peg metalinter prerelease prerelease-upload release release-build require-dep require-protoc require-protoc-gen-gofast require-peg test CLONE_URL=github.com/pilosa/pilosa VERSION := $(shell git describe --tags 2> /dev/null || echo unknown) @@ -63,22 +63,19 @@ endif release: check-clean $(MAKE) release-build GOOS=darwin GOARCH=amd64 $(MAKE) release-build GOOS=darwin GOARCH=amd64 ENTERPRISE=1 - $(MAKE) release-build GOOS=linux GOARCH=amd64 DOCKER_BUILD=1 - $(MAKE) release-build GOOS=linux GOARCH=amd64 DOCKER_BUILD=1 ENTERPRISE=1 - $(MAKE) release-build GOOS=linux GOARCH=386 DOCKER_BUILD=1 - $(MAKE) release-build GOOS=linux GOARCH=386 DOCKER_BUILD=1 ENTERPRISE=1 + $(MAKE) release-build GOOS=linux GOARCH=amd64 + $(MAKE) release-build GOOS=linux GOARCH=amd64 ENTERPRISE=1 + $(MAKE) release-build GOOS=linux GOARCH=386 + $(MAKE) release-build GOOS=linux GOARCH=386 ENTERPRISE=1 -# Create branch-tagged pre-release for client library CI jobs -prerelease-build: vendor - $(MAKE) release-build VERSION_ID=$(BRANCH_ID) +# Create prerelease builds +prerelease: vendor + $(MAKE) release-build GOOS=linux GOARCH=amd64 VERSION_ID=$$\(BRANCH_ID\) + $(if $(shell git describe --tags --exact-match HEAD),$(MAKE) release) + $(MAKE) prerelease-upload -# Create prerelease build for Linux/amd64 -prerelease: - $(MAKE) prerelease-build GOOS=linux GOARCH=amd64 - -# Upload prerelease to S3 -prerelease-upload: prerelease - aws s3 cp build/pilosa-$(BRANCH_ID).tar.gz s3://build.pilosa.com/pilosa-$(BRANCH_ID).tar.gz --acl public-read +prerelease-upload: + aws s3 sync build/ s3://build.pilosa.com/ --exclude "*" --include "*.tar.gz" --acl public-read # Install Pilosa install: vendor @@ -111,6 +108,9 @@ docker-build: docker-test: docker run --rm -v $(PWD):/go/src/$(CLONE_URL) -w /go/src/$(CLONE_URL) golang:$(GO_VERSION) go test -tags='$(BUILD_TAGS)' $(TESTFLAGS) ./... +metalinter: + gometalinter --vendor --disable-all --enable=gotype --enable=gotypex --deadline=60s --exclude "^internal/.*\.pb\.go" ./... + ###################### # Build dependencies # ######################