Merge pull request #219 from codysoyland/ci-updates

Add updated CircleCI config
This commit is contained in:
Cody Soyland 2020-03-31 16:18:10 -05:00 committed by GitHub
commit 3b6a26e5c6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 156 additions and 142 deletions

View file

@ -1,20 +1,28 @@
version: 2
defaults: &defaults
working_directory: /go/src/github.com/pilosa/pilosa
docker:
- image: circleci/golang:1.13
environment:
GO111MODULE: "on"
fast-checkout: &fast-checkout
attach_workspace:
at: .
add-github-auth: &add-github-auth
run: git config --global url."https://moleculacorp:${GITHUB_PERSONAL_ACCESS_TOKEN}@github.com".insteadOf "https://github.com"
version: 2.1
executors:
golang:
parameters:
version:
type: string
default: "1.14"
docker:
- image: circleci/golang:<< parameters.version >>
working_directory: /go/src/github.com/pilosa/pilosa
environment:
GO111MODULE: "on" # TODO: Only needed for Go <1.13, remove when dropping support for 1.11/1.12.
commands:
add-github-auth:
steps:
- run: git config --global url."https://moleculacorp:${GITHUB_PERSONAL_ACCESS_TOKEN}@github.com".insteadOf "https://github.com"
jobs:
setup:
<<: *defaults
executor:
name: golang
steps:
- *add-github-auth
- add-github-auth
- checkout
- restore_cache:
keys:
@ -28,102 +36,71 @@ jobs:
root: .
paths: "*"
check-license-headers:
<<: *defaults
executor:
name: golang
steps:
- *fast-checkout
- *add-github-auth
- attach_workspace:
at: .
- run: make check-license-headers
linter:
<<: *defaults
executor:
name: golang
steps:
- *fast-checkout
- *add-github-auth
- run: curl -sfL https://install.goreleaser.com/github.com/golangci/golangci-lint.sh | sh -s v1.20.0
- run: sudo cp bin/golangci-lint /usr/local/bin/
- attach_workspace:
at: .
- add-github-auth
- run: curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sudo sh -s -- -b /usr/local/bin v1.24.0
- run: make golangci-lint
test-build-arm:
<<: *defaults
executor:
name: golang
steps:
- *fast-checkout
- *add-github-auth
- attach_workspace:
at: .
- add-github-auth
- run: make build GOOS=linux GOARCH=arm GOARM=5
- run: make build GOOS=linux GOARCH=arm GOARM=6
- run: make build GOOS=linux GOARCH=arm GOARM=7
- run: make build GOOS=linux GOARCH=arm64
test-golang-1.14-rc:
<<: *defaults
docker:
- image: circleci/golang:1.14-rc
test:
parameters:
golang_version:
type: string
default: "1.14"
shard_width:
type: string
default: "20"
test_flags:
type: string
default: ""
goarch:
type: string
default: amd64
executor:
name: golang
version: << parameters.golang_version >>
steps:
- *fast-checkout
- *add-github-auth
- attach_workspace:
at: .
- add-github-auth
- run: sudo apt-get install lsof
- run: make test
test-golang-1.13: &base-test
<<: *defaults
steps:
- *fast-checkout
- *add-github-auth
- run: sudo apt-get install lsof
- run: make test
test-golang-1.13-shard22:
<<: *defaults
steps:
- *fast-checkout
- *add-github-auth
- run: sudo apt-get install lsof
- run: make test SHARD_WIDTH=22
test-golang-1.13-race:
<<: *defaults
steps:
- *fast-checkout
- *add-github-auth
- run: sudo apt-get install lsof
- run:
command: make test TESTFLAGS="-race -v -timeout=30m"
no_output_timeout: 30m
test-golang-1.13-386:
<<: *base-test
environment:
GO111MODULE: "on"
GOARCH: 386
test-golang-1.13-enterprise:
<<: *defaults
steps:
- *fast-checkout
- *add-github-auth
- run: sudo apt-get install lsof
- run: make test ENTERPRISE=1
test-golang-1.12:
<<: *defaults
docker:
- image: circleci/golang:1.12
steps:
- *fast-checkout
- *add-github-auth
- run: sudo apt-get install lsof
- run: make test
test-golang-1.11:
<<: *defaults
docker:
- image: circleci/golang:1.11
steps:
- *fast-checkout
- *add-github-auth
- run: sudo apt-get install lsof
- run: make test
- run: make test SHARD_WIDTH=<< parameters.shard_width >> TESTFLAGS=<< parameters.test_flags >> GOARCH=<< parameters.goarch >>
cluster-tests:
<<: *defaults
executor:
name: golang
steps:
- *fast-checkout
- *add-github-auth
- attach_workspace:
at: .
- add-github-auth
- setup_remote_docker
- run: make clustertests-build
prerelease:
<<: *base-test
executor:
name: golang
steps:
- *fast-checkout
- *add-github-auth
- attach_workspace:
at: .
- add-github-auth
- run: make prerelease
- store_artifacts:
path: build
@ -131,10 +108,11 @@ jobs:
root: .
paths: build
release:
<<: *defaults
executor:
name: golang
steps:
- *fast-checkout
- *add-github-auth
- attach_workspace:
at: .
- run: make release
- store_artifacts:
path: build
@ -145,36 +123,48 @@ jobs:
docker:
- image: circleci/python:2.7-jessie
steps:
- run: '[[ -v CIRCLE_PR_NUMBER ]] && circleci step halt || true' # Skip job if this is a PR
- *fast-checkout
- *add-github-auth
- attach_workspace:
at: .
- run: sudo pip install awscli
- run: make prerelease-upload
dockerhub-upload:
<<: *defaults
parameters:
tag_branch:
type: boolean
default: true
tag_tag:
type: boolean
default: false
tag_latest:
type: boolean
default: false
target_name:
type: string
default: moleculacorp/pilosa
executor:
name: golang
steps:
- run: '[[ -v CIRCLE_PR_NUMBER ]] && circleci step halt || true' # Skip job if this is a PR
- *fast-checkout
- *add-github-auth
- attach_workspace:
at: .
- add-github-auth
- setup_remote_docker
- run: make docker
- run: docker tag pilosa:$(git describe --tags) pilosa/pilosa:master
- run: docker login -u $DOCKER_USER -p $DOCKER_PASS
- run: docker push pilosa/pilosa:master
docker-enterprise-upload:
<<: *defaults
steps:
#- run: '[[ -v CIRCLE_PR_NUMBER ]] && circleci step halt || true' # Skip job if this is a PR
- *fast-checkout
- *add-github-auth
- setup_remote_docker
- run: make docker-enterprise
- run: docker tag pilosa:$(git describe --tags) molecula.azurecr.io/pilosa-enterprise:unstable
- run: docker login -u $DOCKER_USER -p $DOCKER_PASS
- run: docker push molecula.azurecr.io/pilosa-enterprise:unstable
- when:
condition: << parameters.tag_branch >>
steps:
- run: make docker-tag-push DOCKER_TARGET=<< parameters.target_name >>:<< pipeline.git.branch >>
- when:
condition: << parameters.tag_tag >>
steps:
- run: make docker-tag-push DOCKER_TARGET=<< parameters.target_name >>:$(git describe --tags)
- when:
condition: << parameters.tag_latest >>
steps:
- run: make docker-tag-push DOCKER_TARGET=<< parameters.target_name >>:latest
workflows:
version: 2
test:
build:
jobs:
- setup
- linter:
@ -186,25 +176,26 @@ workflows:
- test-build-arm:
requires:
- setup
- test-golang-1.14-rc:
- test:
name: test-golang-<< matrix.golang_version >>
matrix:
parameters:
golang_version: ["1.14", "1.13", "1.12", "1.11"]
requires:
- setup
- test-golang-1.13-enterprise:
- test:
name: test-race
test_flags: -race -v -timeout=30m
requires:
- setup
- test-golang-1.13-race:
- test:
name: test-386
goarch: "386"
requires:
- setup
- test-golang-1.13-386:
requires:
- setup
- test-golang-1.13:
requires:
- setup
- test-golang-1.12:
requires:
- setup
- test-golang-1.11:
- test:
name: test-shardwidth-22
shard_width: "22"
requires:
- setup
- cluster-tests:
@ -214,15 +205,32 @@ workflows:
requires:
- linter
- check-license-headers
- test-golang-1.13
- release:
- test-golang-1.14
- dockerhub-upload:
name: dockerhub-upload-stable
tag_branch: true
tag_tag: true
tag_latest: true
requires:
- linter
- check-license-headers
- test-golang-1.13
- test-golang-1.14
filters:
branches:
only: enterprise
tags:
only: /^v.*/
- dockerhub-upload:
name: dockerhub-upload-unstable
tag_branch: true
tag_tag: false
tag_latest: false
requires:
- linter
- check-license-headers
- test-golang-1.14
filters:
branches:
ignore: /.*/
only: enterprise
tags:
ignore: /^v.*/

View file

@ -1,4 +1,4 @@
.PHONY: build check-clean clean cover cover-viz default docker docker-build docker-test generate generate-protoc generate-pql gometalinter install install-build-deps install-golangci-lint install-gometalinter install-protoc install-protoc-gen-gofast install-peg prerelease prerelease-upload release release-build test
.PHONY: build check-clean clean cover cover-viz default docker docker-build docker-test docker-tag-push generate generate-protoc generate-pql gometalinter install install-build-deps install-golangci-lint install-gometalinter install-protoc install-protoc-gen-gofast install-peg prerelease prerelease-upload release release-build test
CLONE_URL=github.com/pilosa/pilosa
VERSION := $(shell git describe --tags 2> /dev/null || echo unknown)
@ -139,6 +139,12 @@ docker: vendor
docker build --build-arg BUILD_FLAGS="${FLAGS}" -t "pilosa:$(VERSION)" .
@echo Created docker image: pilosa:$(VERSION)
# Tag and push a Docker image
docker-tag-push: vendor
docker tag "pilosa:$(VERSION)" $(DOCKER_TARGET)
docker push $(DOCKER_TARGET)
@echo Pushed docker image: $(DOCKER_TARGET)
# Create Docker image from Dockerfile (enterprise)
docker-enterprise: vendor
docker build --build-arg MAKE_FLAGS="ENTERPRISE=1" -t "pilosa-enterprise:$(VERSION)" .

View file

@ -1225,7 +1225,7 @@ func (h *Handler) handlePostImport(w http.ResponseWriter, r *http.Request) {
// Marshal response object.
buf, e := h.api.Serializer.Marshal(&pilosa.ImportResponse{Err: ""})
if e != nil {
http.Error(w, fmt.Sprintf("marshal import response"), http.StatusInternalServerError)
http.Error(w, "marshal import response", http.StatusInternalServerError)
return
}
@ -1738,7 +1738,7 @@ func (h *Handler) handlePostImportColumnAttrs(w http.ResponseWriter, r *http.Req
// Marshal response object.
buf, e := h.api.Serializer.Marshal(&pilosa.ImportResponse{Err: ""})
if e != nil {
http.Error(w, fmt.Sprintf("marshal import-column-attrs response"), http.StatusInternalServerError)
http.Error(w, "marshal import-column-attrs response", http.StatusInternalServerError)
return
}

View file

@ -3379,7 +3379,7 @@ func intersectionCountArrayArray(a, b *Container) (n int32) {
na, nb := len(ca), len(cb)
if na > nb {
ca, cb = cb, ca
na, nb = nb, na // nolint: ineffassign
na, nb = nb, na // nolint: staticcheck, ineffassign
}
j := 0
for _, va := range ca {

View file

@ -636,7 +636,7 @@ func TestClusterResize_RemoveNode(t *testing.T) {
}
t.Run("ErrorRemoveInvalidNode", func(t *testing.T) {
resp := test.Do(t, "POST", m0.URL()+fmt.Sprintf("/cluster/resize/remove-node"), `{"id": "invalid-node-id"}`)
resp := test.Do(t, "POST", m0.URL()+"/cluster/resize/remove-node", `{"id": "invalid-node-id"}`)
expBody := "removing node: finding node to remove: node with provided ID does not exist"
if resp.StatusCode != http.StatusNotFound {
t.Fatalf("expected StatusCode %d but got %d", http.StatusNotFound, resp.StatusCode)
@ -647,7 +647,7 @@ func TestClusterResize_RemoveNode(t *testing.T) {
t.Run("ErrorRemoveCoordinator", func(t *testing.T) {
nodeID := mustNodeID(m0.URL())
resp := test.Do(t, "POST", m0.URL()+fmt.Sprintf("/cluster/resize/remove-node"), fmt.Sprintf(`{"id": "%s"}`, nodeID))
resp := test.Do(t, "POST", m0.URL()+"/cluster/resize/remove-node", fmt.Sprintf(`{"id": "%s"}`, nodeID))
expBody := "removing node: calling node leave: coordinator cannot be removed; first, make a different node the new coordinator"
if resp.StatusCode != http.StatusInternalServerError {
@ -660,7 +660,7 @@ func TestClusterResize_RemoveNode(t *testing.T) {
t.Run("ErrorRemoveOnNonCoordinator", func(t *testing.T) {
coordinatorNodeID := mustNodeID(m0.URL())
nodeID := mustNodeID(m1.URL())
resp := test.Do(t, "POST", m1.URL()+fmt.Sprintf("/cluster/resize/remove-node"), fmt.Sprintf(`{"id": "%s"}`, nodeID))
resp := test.Do(t, "POST", m1.URL()+"/cluster/resize/remove-node", fmt.Sprintf(`{"id": "%s"}`, nodeID))
expBody := fmt.Sprintf("removing node: calling node leave: node removal requests are only valid on the coordinator node: %s", coordinatorNodeID)
if resp.StatusCode != http.StatusInternalServerError {
@ -692,7 +692,7 @@ func TestClusterResize_RemoveNode(t *testing.T) {
}
nodeID := mustNodeID(m1.URL())
resp := test.Do(t, "POST", m0.URL()+fmt.Sprintf("/cluster/resize/remove-node"), fmt.Sprintf(`{"id": "%s"}`, nodeID))
resp := test.Do(t, "POST", m0.URL()+"/cluster/resize/remove-node", fmt.Sprintf(`{"id": "%s"}`, nodeID))
expBody := "not enough data to perform resize"
if resp.StatusCode != http.StatusInternalServerError {
t.Fatalf("expected StatusCode %d but got %d", http.StatusInternalServerError, resp.StatusCode)