495 lines
17 KiB
YAML
495 lines
17 KiB
YAML
version: "2.1"
|
|
|
|
commands:
|
|
install_rust_compiler:
|
|
description: >
|
|
This will install the rust compiler with the rust tools.
|
|
steps:
|
|
- run:
|
|
name: Install clang
|
|
command: sudo apt-get install -y --no-install-recommends clang
|
|
- run:
|
|
name: Install rust compiler
|
|
command: |
|
|
curl https://sh.rustup.rs -sSf | \
|
|
sh -s -- --default-toolchain stable -y
|
|
echo 'source $HOME/.cargo/env' >> $BASH_ENV
|
|
|
|
jobs:
|
|
litmus_daily:
|
|
machine: true
|
|
steps:
|
|
- attach_workspace:
|
|
at: ~/project
|
|
- run: docker login -u=$QUAY_USER -p=$QUAY_PASS quay.io
|
|
- run: docker run --entrypoint "./run_litmus_tests_oss.sh" -e ONE_TEST=src/cloud/rest_api/smoke/test_smoke.py -e BINARYPATH=/Litmus/result/bin/linux/influxd -e BOLTPATH=/Litmus/result/influxd_test/influxd.bolt -e ENGINEPATH=/Litmus/result/influxd_test --net host -v /var/run/docker.sock:/var/run/docker.sock -v ~/project:/Litmus/result quay.io/influxdb/litmus:latest
|
|
- run:
|
|
name: Litmus Smoke Tests Success
|
|
when: on_success
|
|
command: bash ~/project/etc/litmus_success_notify.sh Smoke
|
|
path: ~/project
|
|
- run:
|
|
name: Litmus Smoke Tests Fail
|
|
when: on_fail
|
|
command: bash ~/project/etc/litmus_fail_notify.sh Smoke
|
|
- store_artifacts:
|
|
path: ~/project
|
|
destination: raw-daily-output
|
|
- store_test_results:
|
|
path: ~/project
|
|
destination: daily-junit
|
|
litmus_nightly:
|
|
machine: true
|
|
steps:
|
|
- attach_workspace:
|
|
at: ~/project
|
|
- run: docker login -u=$QUAY_USER -p=$QUAY_PASS quay.io
|
|
- run: docker run --entrypoint "./run_litmus_tests_oss.sh" -e TEST_LIST=tests_lists/gateway_api_tests.list -e DOCKERIMAGE=true --net host -v /var/run/docker.sock:/var/run/docker.sock -v ~/project:/Litmus/result quay.io/influxdb/litmus:latest
|
|
- run:
|
|
name: Litmus Nightly Tests Success
|
|
when: on_success
|
|
command: bash ~/project/etc/litmus_success_notify.sh Nightly
|
|
- run:
|
|
name: Litmus Nightly Tests Fail
|
|
when: on_fail
|
|
command: bash ~/project/etc/litmus_fail_notify.sh Nightly
|
|
- store_artifacts:
|
|
path: ~/project
|
|
destination: raw-nightly-output
|
|
- store_test_results:
|
|
path: ~/project
|
|
destination: nightly-junit
|
|
e2e:
|
|
docker:
|
|
- image: circleci/golang:1.13-node-browsers
|
|
environment:
|
|
GOCACHE: /tmp/go-cache
|
|
GOFLAGS: "-mod=readonly -p=4" # Go on Circle thinks 32 CPUs are available, but there aren't.
|
|
working_directory: /go/src/github.com/influxdata/influxdb
|
|
steps:
|
|
- checkout
|
|
|
|
# Speed up `make build` by restoring caches from previous runs.
|
|
- restore_cache:
|
|
name: Restoring GOCACHE
|
|
keys:
|
|
- influxdb-gocache- # Just match the most recent Go cache.
|
|
- restore_cache:
|
|
name: Restoring GOPATH/pkg/mod
|
|
keys:
|
|
- influxdb-gomod-{{ checksum "go.sum" }} # Just match the go.sum checksum cache.
|
|
- run: sudo apt-get install -y netcat-openbsd
|
|
- run: sudo apt-get install -y bzr
|
|
- install_rust_compiler
|
|
- run: make protoc
|
|
- run: make build
|
|
- run:
|
|
command: ./bin/linux/influxd --store=memory --e2e-testing=true
|
|
background: true
|
|
- run: make e2e
|
|
- store_test_results:
|
|
path: ui/junit-results
|
|
destination: junit-results
|
|
- store_artifacts:
|
|
path: ui/cypress/videos
|
|
destination: videos
|
|
- store_artifacts:
|
|
path: ui/cypress/screenshots
|
|
destination: screenshots
|
|
selenium_accept:
|
|
docker:
|
|
- image: circleci/node:13.0.1-stretch-browsers
|
|
- image: quay.io/influxdb/influx:nightly
|
|
command: [--e2e-testing=true]
|
|
steps:
|
|
- checkout
|
|
- run:
|
|
name: Environment check
|
|
command: |
|
|
git --version
|
|
node --version && npm --version
|
|
docker --version
|
|
google-chrome --version && which google-chrome && chromedriver --version && which chromedriver
|
|
timeout 300 bash -c 'while [[ "$(curl -s -o /dev/null -w ''%{http_code}'' localhost:9999)" != "200" ]]; do sleep 5; done' || false
|
|
- run:
|
|
name: Checkout Tests
|
|
command: git clone --single-branch --branch 2.0-Beta https://github.com/bonitoo-io/selenium-accept-infl2.git
|
|
- run:
|
|
name: Selenium tests
|
|
command: |
|
|
set +e
|
|
cd selenium-accept-infl2
|
|
npm install
|
|
npm test; TEST_RESULT=$?
|
|
npm run report:html
|
|
npm run report:junit
|
|
mkdir -p ~/test-results/cucumber
|
|
mkdir -p ~/artifacts/html
|
|
cp ~/project/selenium-accept-infl2/report/cucumber_report.html ~/artifacts/html/cucumber_report.html
|
|
cp ~/project/selenium-accept-infl2/report/cucumber_junit.xml ~/test-results/cucumber/report.xml
|
|
cp ~/project/selenium-accept-infl2/report/cucumber_junit.xml ~/artifacts/report.xml
|
|
cp -r ~/project/selenium-accept-infl2/screenshots ~/artifacts
|
|
ls -al
|
|
exit $TEST_RESULT
|
|
- store_test_results:
|
|
path: ~/test-results
|
|
- store_artifacts:
|
|
path: ~/artifacts
|
|
jstest:
|
|
docker:
|
|
- image: circleci/golang:1.13-node-browsers
|
|
working_directory: /go/src/github.com/influxdata/influxdb
|
|
parallelism: 8
|
|
steps:
|
|
- checkout
|
|
- restore_cache:
|
|
keys:
|
|
- 'yarn-cached-packages-{{ checksum "yarn.lock" }}'
|
|
name: "Restore Yarn Package Cache"
|
|
- run:
|
|
command: |
|
|
set +e
|
|
cd ui
|
|
yarn install --frozen-lockfile
|
|
yarn prettier
|
|
name: "Install Dependencies"
|
|
- run: make ui_client
|
|
- run:
|
|
name: parallel jest tests
|
|
command: |
|
|
set +e
|
|
cd ui
|
|
TESTFILES=$(circleci tests glob "src/**/*.test.ts*" | circleci tests split --split-by=timings)
|
|
yarn test:circleci $TESTFILES
|
|
- store_test_results:
|
|
path: coverage
|
|
- store_artifacts:
|
|
path: coverage
|
|
destination: raw-test-output
|
|
- save_cache:
|
|
key: 'yarn-cached-packages-{{ checksum "yarn.lock" }}'
|
|
name: "Save Yarn Package Cache"
|
|
paths:
|
|
- ~/.cache/yarn
|
|
jslint:
|
|
docker:
|
|
- image: circleci/golang:1.13-node-browsers
|
|
working_directory: /go/src/github.com/influxdata/influxdb
|
|
parallelism: 8
|
|
steps:
|
|
- checkout
|
|
- restore_cache:
|
|
keys:
|
|
- 'yarn-cached-packages-{{ checksum "yarn.lock" }}'
|
|
name: "Restore Yarn Package Cache"
|
|
- run:
|
|
command: |
|
|
set +e
|
|
cd ui
|
|
yarn install --frozen-lockfile
|
|
name: "Install Dependencies"
|
|
- run: make ui_client
|
|
- run:
|
|
name: parallel eslint
|
|
command: |
|
|
set +e
|
|
cd ui
|
|
TESTFILES=$(circleci tests glob "src/**/*.ts*" "cypress/**/*.ts*" | circleci tests split --split-by=filesize)
|
|
yarn eslint:circleci $TESTFILES
|
|
- save_cache:
|
|
key: 'yarn-cached-packages-{{ checksum "yarn.lock" }}'
|
|
name: "Save Yarn Package Cache"
|
|
paths:
|
|
- ~/.cache/yarn
|
|
gotest:
|
|
docker:
|
|
- image: circleci/golang:1.13
|
|
environment:
|
|
GOCACHE: /tmp/go-cache
|
|
GOFLAGS: "-mod=readonly -p=2" # Go on Circle thinks 32 CPUs are available, but there aren't.
|
|
TEST_RESULTS: /tmp/test-results
|
|
working_directory: /go/src/github.com/influxdata/influxdb
|
|
parallelism: 8
|
|
steps:
|
|
- checkout
|
|
|
|
# Populate GOCACHE.
|
|
- restore_cache:
|
|
name: Restoring GOCACHE
|
|
keys:
|
|
- influxdb-gocache-{{ .Branch }}-{{ .Revision }} # Matches when retrying a single run.
|
|
- influxdb-gocache-{{ .Branch }}- # Matches a new commit on an existing branch.
|
|
- influxdb-gocache- # Matches a new branch.
|
|
# Populate GOPATH/pkg.
|
|
- restore_cache:
|
|
name: Restoring GOPATH/pkg/mod
|
|
keys:
|
|
- influxdb-gomod-{{ checksum "go.sum" }} # Matches based on go.sum checksum.
|
|
- run: sudo apt-get install -y bzr
|
|
- install_rust_compiler
|
|
- run: mkdir -p $TEST_RESULTS
|
|
- run: make test-go # This uses the test cache so it may succeed or fail quickly.
|
|
- run:
|
|
name: parallel go race tests
|
|
command: |
|
|
set +e
|
|
# filter internal/promqltests because it has special go.mod
|
|
TESTFILES=$(go list ./... | grep -v internal/promqltests | circleci tests split --split-by=timings)
|
|
echo $TESTFILES
|
|
GOTRACEBACK=all GO111MODULE=on FLUX_PARSER_TYPE=rust CGO_LDFLAGS="$(cat .cgo_ldflags)" gotestsum --format standard-quiet --junitfile /tmp/test-results/gotestsum.xml -- -race -count=1 -tags 'libflux' $TESTFILES
|
|
- save_cache:
|
|
name: Saving GOCACHE
|
|
key: influxdb-gocache-{{ .Branch }}-{{ .Revision }}
|
|
paths:
|
|
- /tmp/go-cache
|
|
when: always
|
|
- save_cache:
|
|
name: Saving GOPATH/pkg/mod
|
|
key: influxdb-gomod-{{ checksum "go.sum" }}
|
|
paths:
|
|
- /go/pkg/mod
|
|
when: always
|
|
- store_artifacts: # Upload test summary for display in Artifacts: https://circleci.com/docs/2.0/artifacts/
|
|
path: /tmp/test-results
|
|
destination: raw-test-output
|
|
- store_test_results: # Upload test results for display in Test Summary: https://circleci.com/docs/2.0/collect-test-data/
|
|
path: /tmp/test-results
|
|
golint:
|
|
docker:
|
|
- image: circleci/golang:1.13
|
|
environment:
|
|
GOCACHE: /tmp/go-cache
|
|
GOFLAGS: "-mod=readonly -p=2" # Go on Circle thinks 32 CPUs are available, but there aren't.
|
|
TEST_RESULTS: /tmp/test-results
|
|
working_directory: /go/src/github.com/influxdata/influxdb
|
|
steps:
|
|
- checkout
|
|
|
|
# Populate GOCACHE.
|
|
- restore_cache:
|
|
name: Restoring GOCACHE
|
|
keys:
|
|
- influxdb-gocache-{{ .Branch }}-{{ .Revision }} # Matches when retrying a single run.
|
|
- influxdb-gocache-{{ .Branch }}- # Matches a new commit on an existing branch.
|
|
- influxdb-gocache- # Matches a new branch.
|
|
# Populate GOPATH/pkg.
|
|
- restore_cache:
|
|
name: Restoring GOPATH/pkg/mod
|
|
keys:
|
|
- influxdb-gomod-{{ checksum "go.sum" }} # Matches based on go.sum checksum.
|
|
- run: sudo apt-get install -y bzr
|
|
- install_rust_compiler
|
|
- run: mkdir -p $TEST_RESULTS
|
|
- run: |
|
|
# this is not in a seperate bash script because it isn't meant to be run on local.
|
|
# it just checks to make sure that the same major/minor version of go is used in the mod file as on ci
|
|
# to prevent accidentally checking in a wrong go mod version.
|
|
gomodversiondiff=$( go mod edit -go=$( go version | sed -n 's/^.*go\([0-9]*.[0-9]*\).*$/\1/p') -print |diff - go.mod )
|
|
if [ "$gomodversiondiff" ]
|
|
then
|
|
echo unexpected go version $gomodversiondiff
|
|
exit 1
|
|
fi
|
|
- run: make vet
|
|
- run: make checkfmt
|
|
- run: make checktidy
|
|
- run: GO111MODULE=on go mod vendor # staticcheck looks in vendor for dependencies.
|
|
- run: GO111MODULE=on go install honnef.co/go/tools/cmd/staticcheck # Install staticcheck from the version we specify in go.mod.
|
|
- run: GO111MODULE=on staticcheck ./...
|
|
- save_cache:
|
|
name: Saving GOCACHE
|
|
key: influxdb-gocache-{{ .Branch }}-{{ .Revision }}
|
|
paths:
|
|
- /tmp/go-cache
|
|
when: always
|
|
- save_cache:
|
|
name: Saving GOPATH/pkg/mod
|
|
key: influxdb-gomod-{{ checksum "go.sum" }}
|
|
paths:
|
|
- /go/pkg/mod
|
|
when: always
|
|
- store_artifacts:
|
|
path: /tmp/test-results
|
|
destination: raw-test-output
|
|
- store_test_results:
|
|
path: /tmp/test-results
|
|
build:
|
|
docker:
|
|
- image: circleci/golang:1.13-node-browsers
|
|
environment:
|
|
GOCACHE: /tmp/go-cache
|
|
GOFLAGS: "-mod=readonly -p=4" # Go on Circle thinks 32 CPUs are available, but there aren't.
|
|
working_directory: /go/src/github.com/influxdata/influxdb
|
|
steps:
|
|
- checkout
|
|
- run: sudo apt-get install -y bzr
|
|
- install_rust_compiler
|
|
- run: make checkcommit
|
|
|
|
# Speed up `make build` by restoring caches from previous runs.
|
|
- restore_cache:
|
|
name: Restoring GOCACHE
|
|
keys:
|
|
- influxdb-gocache- # Just match the most recent Go cache.
|
|
- restore_cache:
|
|
name: Restoring GOPATH/pkg/mod
|
|
keys:
|
|
- influxdb-gomod-{{ checksum "go.sum" }} # Just match the go.sum checksum cache.
|
|
- run: make protoc
|
|
- run: make build
|
|
- persist_to_workspace:
|
|
root: .
|
|
paths:
|
|
- project
|
|
- bin/linux/influxd
|
|
- bin/linux/influx
|
|
- etc/litmus_success_notify.sh
|
|
- etc/litmus_fail_notify.sh
|
|
deploy-nightly:
|
|
docker:
|
|
- image: circleci/golang:1.13-node-browsers
|
|
environment:
|
|
GOCACHE: /tmp/go-cache
|
|
GOFLAGS: "-mod=readonly -p=4" # Go on Circle thinks 32 CPUs are available, but there aren't.
|
|
working_directory: /go/src/github.com/influxdata/influxdb
|
|
steps:
|
|
- checkout
|
|
|
|
# Speed up `make nightly` by restoring caches from previous runs.
|
|
- restore_cache:
|
|
name: Restoring GOCACHE
|
|
keys:
|
|
- influxdb-gocache- # Just match the most recent Go cache.
|
|
- restore_cache:
|
|
name: Restoring GOPATH/pkg/mod
|
|
keys:
|
|
- influxdb-gomod-{{ checksum "go.sum" }} # Just match the go.sum checksum cache.
|
|
- setup_remote_docker
|
|
- run:
|
|
name: "Docker Login"
|
|
command: docker login -u "$QUAY_USER" -p $QUAY_PASS quay.io
|
|
- run: sudo apt-get install -y bzr
|
|
- run: make protoc # installs protoc
|
|
- run:
|
|
name: "Build nightly"
|
|
command: make nightly
|
|
- persist_to_workspace:
|
|
root: .
|
|
paths:
|
|
- etc/litmus_success_notify.sh
|
|
- etc/litmus_fail_notify.sh
|
|
|
|
release:
|
|
docker:
|
|
- image: circleci/golang:1.13-node-browsers
|
|
environment:
|
|
GOCACHE: /tmp/go-cache
|
|
GOFLAGS: "-mod=readonly -p=4" # Go on Circle thinks 32 CPUs are available, but there aren't.
|
|
DOCKER_VERSION: 2.0.0-beta
|
|
working_directory: /go/src/github.com/influxdata/influxdb
|
|
steps:
|
|
- checkout
|
|
|
|
# Speed up `make nightly` by restoring caches from previous runs.
|
|
- restore_cache:
|
|
name: Restoring GOCACHE
|
|
keys:
|
|
- influxdb-gocache- # Just match the most recent Go cache.
|
|
- restore_cache:
|
|
name: Restoring GOPATH/pkg/mod
|
|
keys:
|
|
- influxdb-gomod-{{ checksum "go.sum" }} # Just match the go.sum checksum cache.
|
|
- setup_remote_docker
|
|
- run:
|
|
name: "Docker Login"
|
|
command: docker login -u "$QUAY_USER" -p $QUAY_PASS quay.io
|
|
- run: sudo apt-get install -y bzr
|
|
- run: make protoc # installs protoc
|
|
- run:
|
|
name: "Build release"
|
|
command: make release
|
|
|
|
workflows:
|
|
version: 2
|
|
build:
|
|
jobs:
|
|
- gotest
|
|
- golint
|
|
- jstest
|
|
- jslint
|
|
- build
|
|
- litmus_daily:
|
|
requires:
|
|
- build
|
|
filters:
|
|
branches:
|
|
only: /^(?!pull\/).*$/
|
|
e2e:
|
|
jobs:
|
|
- e2e
|
|
nightly:
|
|
triggers:
|
|
- schedule:
|
|
cron: "0 7 * * *"
|
|
filters:
|
|
branches:
|
|
only:
|
|
- master
|
|
jobs:
|
|
- gotest
|
|
- golint
|
|
- jstest
|
|
- jslint
|
|
- deploy-nightly:
|
|
requires:
|
|
- gotest
|
|
- golint
|
|
- jstest
|
|
- jslint
|
|
filters:
|
|
branches:
|
|
only: master
|
|
- litmus_nightly:
|
|
requires:
|
|
- deploy-nightly
|
|
- selenium_accept:
|
|
requires:
|
|
- deploy-nightly
|
|
release:
|
|
jobs:
|
|
- gotest:
|
|
filters:
|
|
branches:
|
|
ignore: /.*/
|
|
tags:
|
|
only: /^v[0-9]+\.[0-9]+\.[0-9]+-(alpha|beta)\.[0-9]+$/
|
|
- golint:
|
|
filters:
|
|
branches:
|
|
ignore: /.*/
|
|
tags:
|
|
only: /^v[0-9]+\.[0-9]+\.[0-9]+-(alpha|beta)\.[0-9]+$/
|
|
- jstest:
|
|
filters:
|
|
branches:
|
|
ignore: /.*/
|
|
tags:
|
|
only: /^v[0-9]+\.[0-9]+\.[0-9]+-(alpha|beta)\.[0-9]+$/
|
|
- jslint:
|
|
filters:
|
|
branches:
|
|
ignore: /.*/
|
|
tags:
|
|
only: /^v[0-9]+\.[0-9]+\.[0-9]+-(alpha|beta)\.[0-9]+$/
|
|
- release:
|
|
requires:
|
|
- gotest
|
|
- golint
|
|
- jstest
|
|
- jslint
|
|
filters:
|
|
branches:
|
|
ignore: /.*/
|
|
tags:
|
|
only: /^v[0-9]+\.[0-9]+\.[0-9]+-(alpha|beta)\.[0-9]+$/
|