mirror of
https://github.com/featurebasedb/featurebase.git
synced 2026-09-06 00:25:55 +00:00
332 lines
9.9 KiB
YAML
332 lines
9.9 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 featurebase"
|
|
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 featurebase:$(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 featurebase:$(git describe --tags) help
|
|
- run: make docker-tag-push DOCKER_TARGET=moleculacorp/featurebase:<< 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 featurebase:$(git describe --tags) help
|
|
- run: make docker-tag-push DOCKER_TARGET=moleculacorp/featurebase:<< pipeline.git.tag >>
|
|
- run: make docker-tag-push DOCKER_TARGET=moleculacorp/featurebase: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: /.*/
|