mirror of
https://github.com/featurebasedb/featurebase.git
synced 2026-10-18 08:43:36 +00:00
The rbf_bolt tests are unusually expensive, partially because they're run with the race detector on, but also because it's basically running two copies of all the tests and comparing them... But they haven't detected anything in ages, because the RBF stuff is now pretty stable, and those tests take about twice as long as anything else in our testing, and thus impede our workflow noticably for little-to-no return. We might some day want to fully remove them, but for now, just taking them out of CI should streamline our workflows a bit.
332 lines
9.8 KiB
YAML
332 lines
9.8 KiB
YAML
version: 2.1
|
|
|
|
executors:
|
|
golang:
|
|
parameters:
|
|
version:
|
|
type: string
|
|
default: "1.15.8"
|
|
resource_class:
|
|
type: string
|
|
default: medium
|
|
docker:
|
|
- image: circleci/golang:<< parameters.version >>
|
|
resource_class: << parameters.resource_class >>
|
|
working_directory: /go/src/github.com/molecula/featurebase
|
|
|
|
commands:
|
|
add-github-auth:
|
|
steps:
|
|
- run: git config --global url."https://${GITHUB_USER}:${GITHUB_PERSONAL_ACCESS_TOKEN}@github.com/".insteadOf "https://github.com/"
|
|
- run: git config --global url."https://${GITHUB_USER}:${GITHUB_PERSONAL_ACCESS_TOKEN}@github.com/".insteadOf "git@github.com:"
|
|
restore-mod-cache:
|
|
steps:
|
|
- restore_cache:
|
|
key: mod-cache-{{ checksum "go.sum" }}
|
|
save-mod-cache:
|
|
steps:
|
|
- save_cache:
|
|
key: mod-cache-{{ checksum "go.sum" }}
|
|
paths:
|
|
- /go/pkg/mod/
|
|
checkout-plus:
|
|
steps:
|
|
- add-github-auth
|
|
- checkout
|
|
- restore-mod-cache
|
|
skip-if-root-unchanged:
|
|
description: "skips the parent job if the PR includes no changes to pilosa"
|
|
steps:
|
|
- run: |
|
|
ROOT_CHANGED_FILES="$(git diff --name-only HEAD $(git merge-base master HEAD) | grep -v '^lattice/')" || true
|
|
echo "ROOT_CHANGED_FILES = $ROOT_CHANGED_FILES"
|
|
if [ -z "$ROOT_CHANGED_FILES" ] ; then
|
|
echo "halting step"
|
|
circleci step halt
|
|
fi
|
|
skip-if-lattice-unchanged:
|
|
description: "skips the parent job if the PR includes no changes to lattice"
|
|
steps:
|
|
- run: |
|
|
LATTICE_CHANGED_FILES="$(git diff --name-only HEAD $(git merge-base master HEAD) | grep '^lattice/')" || true
|
|
echo "LATTICE_CHANGED_FILES = $LATTICE_CHANGED_FILES"
|
|
if [ -z "$LATTICE_CHANGED_FILES" ] ; then
|
|
echo "halting step"
|
|
circleci step halt
|
|
fi
|
|
|
|
jobs:
|
|
setup:
|
|
executor:
|
|
name: golang
|
|
steps:
|
|
- checkout-plus
|
|
- run: go mod download
|
|
- save-mod-cache
|
|
check-license-headers:
|
|
executor:
|
|
name: golang
|
|
steps:
|
|
- checkout-plus
|
|
- skip-if-root-unchanged
|
|
- run: make check-license-headers
|
|
linter:
|
|
executor:
|
|
name: golang
|
|
steps:
|
|
- checkout-plus
|
|
- skip-if-root-unchanged
|
|
- run: curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sudo sh -s -- -b /usr/local/bin v1.31.0
|
|
- run: make golangci-lint
|
|
go-mod-tidy:
|
|
executor:
|
|
name: golang
|
|
steps:
|
|
- checkout-plus
|
|
- skip-if-root-unchanged
|
|
- run: go mod tidy
|
|
- run: git diff --exit-code -- go.mod go.sum
|
|
check-changelog-label:
|
|
executor:
|
|
name: golang
|
|
steps:
|
|
- run: '[[ -n $CIRCLE_PULL_REQUEST ]] || circleci step halt || true' # Skip if this is not a pull request
|
|
- run: curl https://$GITHUB_USER:$GITHUB_PERSONAL_ACCESS_TOKEN@api.github.com/repos/molecula/featurebase/pulls/$(basename $CIRCLE_PULL_REQUEST) | jq "[.labels[] | .name | startswith(\"changelog\")] | any" -e
|
|
test-build-arm:
|
|
executor:
|
|
name: golang
|
|
steps:
|
|
- checkout-plus
|
|
- skip-if-root-unchanged
|
|
- 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:
|
|
parameters:
|
|
resource_class:
|
|
type: string
|
|
default: medium
|
|
golang_version:
|
|
type: string
|
|
default: "1.15.8"
|
|
shard_width:
|
|
type: string
|
|
default: "20"
|
|
test_make_target:
|
|
type: string
|
|
default: "test"
|
|
test_flags:
|
|
type: string
|
|
default: ""
|
|
goarch:
|
|
type: string
|
|
default: amd64
|
|
executor:
|
|
name: golang
|
|
version: << parameters.golang_version >>
|
|
resource_class: << parameters.resource_class >>
|
|
environment:
|
|
TMPDIR: /mnt/ramdisk
|
|
steps:
|
|
- checkout-plus
|
|
- skip-if-root-unchanged
|
|
- run: sudo apt-get update --allow-releaseinfo-change -y
|
|
- run: sudo apt-get install lsof
|
|
- run:
|
|
command: make << parameters.test_make_target >> SHARD_WIDTH=<< parameters.shard_width >> GOARCH=<< parameters.goarch >>
|
|
no_output_timeout: 30m
|
|
test-external-lookup:
|
|
docker:
|
|
- image: circleci/golang:1.15.8
|
|
- image: circleci/postgres:13.2-ram
|
|
environment:
|
|
POSTGRES_PASSWORD=password
|
|
steps:
|
|
- checkout-plus
|
|
- skip-if-root-unchanged
|
|
- run: sudo apt-get update --allow-releaseinfo-change -y
|
|
- run: sudo apt-get install postgresql-client
|
|
- run: (for i in `seq 1 20`; do pg_isready -h localhost && exit 0 || sleep 1; done; exit 1)
|
|
- run:
|
|
command: make test-external-lookup EXTERNAL_LOOKUP_DSN=postgresql://postgres:password@localhost/circle_test?sslmode=disable
|
|
no_output_timeout: 30m
|
|
test-backup-restore:
|
|
executor:
|
|
name: golang
|
|
steps:
|
|
- checkout-plus
|
|
- skip-if-root-unchanged
|
|
- setup_remote_docker
|
|
- run: echo -n $DOCKER_PASS | docker login -u $DOCKER_USER --password-stdin
|
|
- run: make backuptests-build
|
|
- run: make backuptests
|
|
cluster-tests:
|
|
executor:
|
|
name: golang
|
|
steps:
|
|
- checkout-plus
|
|
- skip-if-root-unchanged
|
|
- setup_remote_docker
|
|
- run: make clustertests-build
|
|
release:
|
|
executor:
|
|
name: golang
|
|
steps:
|
|
- checkout-plus
|
|
- attach_workspace:
|
|
at: .
|
|
- setup_remote_docker:
|
|
version: 19.03.13 # see https://support.circleci.com/hc/en-us/articles/360050934711
|
|
- run: echo -n $DOCKER_PASS | docker login -u $DOCKER_USER --password-stdin
|
|
- run: make docker-release
|
|
- store_artifacts:
|
|
path: build
|
|
- persist_to_workspace:
|
|
root: .
|
|
paths: build
|
|
publish_release:
|
|
executor:
|
|
name: golang
|
|
steps:
|
|
- attach_workspace:
|
|
at: .
|
|
- run: go get github.com/tcnksm/ghr
|
|
- run: ghr -t ${GITHUB_PERSONAL_ACCESS_TOKEN} -u ${CIRCLE_PROJECT_USERNAME} -r ${CIRCLE_PROJECT_REPONAME} -c ${CIRCLE_SHA1} -delete ${CIRCLE_TAG} ./build/
|
|
docker-build:
|
|
executor:
|
|
name: golang
|
|
steps:
|
|
- checkout-plus
|
|
- setup_remote_docker:
|
|
version: 19.03.13 # see https://support.circleci.com/hc/en-us/articles/360050934711
|
|
- run: echo -n $DOCKER_PASS | docker login -u $DOCKER_USER --password-stdin
|
|
- run: make docker GO_VERSION=1.15.8
|
|
- run: docker run pilosa:$(git describe --tags) help
|
|
dockerhub-upload-unstable:
|
|
executor:
|
|
name: golang
|
|
steps:
|
|
- checkout-plus
|
|
- setup_remote_docker:
|
|
version: 19.03.13 # see https://support.circleci.com/hc/en-us/articles/360050934711
|
|
- run: echo -n $DOCKER_PASS | docker login -u $DOCKER_USER --password-stdin
|
|
- run: make docker
|
|
- run: docker run pilosa:$(git describe --tags) help
|
|
- run: make docker-tag-push DOCKER_TARGET=moleculacorp/pilosa:<< pipeline.git.branch >>
|
|
dockerhub-upload-stable:
|
|
executor:
|
|
name: golang
|
|
steps:
|
|
- checkout-plus
|
|
- setup_remote_docker:
|
|
version: 19.03.13 # see https://support.circleci.com/hc/en-us/articles/360050934711
|
|
- run: echo -n $DOCKER_PASS | docker login -u $DOCKER_USER --password-stdin
|
|
- run: make docker
|
|
- run: docker run pilosa:$(git describe --tags) help
|
|
- run: make docker-tag-push DOCKER_TARGET=moleculacorp/pilosa:<< pipeline.git.tag >>
|
|
- run: make docker-tag-push DOCKER_TARGET=moleculacorp/pilosa:latest
|
|
|
|
workflows:
|
|
build:
|
|
jobs:
|
|
- setup:
|
|
context: molecula
|
|
filters:
|
|
tags:
|
|
only: /^v.*/
|
|
- linter:
|
|
context: molecula
|
|
requires:
|
|
- setup
|
|
- check-license-headers:
|
|
context: molecula
|
|
requires:
|
|
- setup
|
|
- go-mod-tidy:
|
|
context: molecula
|
|
requires:
|
|
- setup
|
|
- check-changelog-label:
|
|
context: molecula
|
|
requires:
|
|
- setup
|
|
- test-build-arm:
|
|
context: molecula
|
|
requires:
|
|
- setup
|
|
- test:
|
|
name: test-golang-<< matrix.golang_version >>
|
|
resource_class: large
|
|
context: molecula
|
|
requires:
|
|
- setup
|
|
matrix:
|
|
parameters:
|
|
golang_version: ["1.14.15", "1.15.8", "1.16.3"]
|
|
- test:
|
|
name: << matrix.test_make_target >>
|
|
resource_class: xlarge
|
|
context: molecula
|
|
requires:
|
|
- setup
|
|
matrix:
|
|
parameters:
|
|
test_make_target: ["test-race"]
|
|
- test:
|
|
name: test-shardwidth-22
|
|
context: molecula
|
|
shard_width: "22"
|
|
resource_class: large
|
|
requires:
|
|
- setup
|
|
- test-external-lookup:
|
|
context: molecula
|
|
requires:
|
|
- setup
|
|
- test-backup-restore:
|
|
context: molecula
|
|
requires:
|
|
- setup
|
|
- cluster-tests:
|
|
context: molecula
|
|
requires:
|
|
- setup
|
|
- docker-build:
|
|
context: molecula
|
|
requires:
|
|
- setup
|
|
- release:
|
|
context: molecula
|
|
requires:
|
|
- setup
|
|
filters:
|
|
tags:
|
|
only: /^v.*/
|
|
branches:
|
|
only: master
|
|
- publish_release:
|
|
context: molecula
|
|
requires:
|
|
- release
|
|
filters:
|
|
tags:
|
|
only: /^v.*/
|
|
branches:
|
|
ignore: /.*/
|
|
- dockerhub-upload-unstable:
|
|
context: molecula
|
|
requires:
|
|
- setup
|
|
filters:
|
|
branches:
|
|
only: master
|
|
- dockerhub-upload-stable:
|
|
context: molecula
|
|
requires:
|
|
- setup
|
|
filters:
|
|
tags:
|
|
only: /^v.*/
|
|
branches:
|
|
ignore: /.*/
|