2020-11-26 13:38:27 +00:00
|
|
|
|
# CI Overview
|
|
|
|
|
# -----------
|
|
|
|
|
#
|
|
|
|
|
# Each night:
|
|
|
|
|
#
|
|
|
|
|
# A build image is created (ci_image) from `docker/Dockerfile.ci` and is
|
|
|
|
|
# pushed to `quay.io/influxdb/rust:ci`. This build image is then used to run
|
|
|
|
|
# the CI tasks for the day.
|
|
|
|
|
#
|
|
|
|
|
# CI runs for git branches ending in `/perf`:
|
|
|
|
|
#
|
|
|
|
|
# Runs tests, fmt, & lints and then compiles binaries using the "release"
|
|
|
|
|
# cargo target and pushes a container with the binary to
|
|
|
|
|
# `quay.io/influxdb/fusion` (see perf_image below).
|
2020-11-26 16:38:57 +00:00
|
|
|
|
#
|
2021-03-29 16:55:50 +00:00
|
|
|
|
# CI for all other branches:
|
|
|
|
|
#
|
|
|
|
|
# - cargo build with the default cargo profile ("dev")
|
|
|
|
|
# - cargo test
|
|
|
|
|
# - cargo fmt
|
|
|
|
|
# - clippy (with warnings denied)
|
|
|
|
|
# - lint protobufs
|
2021-04-07 20:33:38 +00:00
|
|
|
|
# - check if generated flatbuffers code is up to date
|
2020-11-26 13:38:27 +00:00
|
|
|
|
|
2020-02-07 15:39:31 +00:00
|
|
|
|
version: 2.1
|
|
|
|
|
|
|
|
|
|
commands:
|
2021-04-20 19:29:14 +00:00
|
|
|
|
rust_components:
|
2021-06-23 18:30:31 +00:00
|
|
|
|
description: Verify installed components
|
2021-04-20 15:17:05 +00:00
|
|
|
|
steps:
|
|
|
|
|
- run:
|
2021-06-23 18:30:31 +00:00
|
|
|
|
name: Verify installed components
|
|
|
|
|
command: |
|
2021-08-17 10:09:18 +00:00
|
|
|
|
rustup --version
|
|
|
|
|
rustup show
|
|
|
|
|
cargo fmt --version
|
|
|
|
|
cargo clippy --version
|
2021-04-20 19:29:14 +00:00
|
|
|
|
|
2021-03-29 16:55:50 +00:00
|
|
|
|
cache_restore:
|
|
|
|
|
description: Restore Cargo Cache
|
|
|
|
|
steps:
|
|
|
|
|
- restore_cache:
|
|
|
|
|
name: Restoring Cargo Cache
|
|
|
|
|
keys:
|
|
|
|
|
- cargo-cache-{{ arch }}-{{ .Branch }}-{{ checksum "Cargo.lock" }}
|
|
|
|
|
- cargo-cache-{{ arch }}-{{ .Branch }}
|
|
|
|
|
- cargo-cache
|
|
|
|
|
cache_save:
|
|
|
|
|
description: Save Cargo Cache
|
|
|
|
|
steps:
|
|
|
|
|
- save_cache:
|
|
|
|
|
name: Save Cargo Cache
|
|
|
|
|
paths:
|
|
|
|
|
- /usr/local/cargo/registry
|
|
|
|
|
key: cargo-cache-{{ arch }}-{{ .Branch }}-{{ checksum "Cargo.lock" }}
|
2020-06-05 21:45:44 +00:00
|
|
|
|
|
2020-02-07 15:39:31 +00:00
|
|
|
|
jobs:
|
|
|
|
|
fmt:
|
|
|
|
|
docker:
|
2020-05-28 01:25:57 +00:00
|
|
|
|
- image: quay.io/influxdb/rust:ci
|
2021-03-29 16:55:50 +00:00
|
|
|
|
environment:
|
2021-08-17 10:09:18 +00:00
|
|
|
|
# Disable incremental compilation to avoid overhead. We are not preserving these files anyway.
|
|
|
|
|
CARGO_INCREMENTAL: "0"
|
|
|
|
|
# Disable full debug symbol generation to speed up CI build
|
|
|
|
|
# "1" means line tables only, which is useful for panic tracebacks.
|
|
|
|
|
RUSTFLAGS: "-C debuginfo=1"
|
2020-02-07 15:39:31 +00:00
|
|
|
|
steps:
|
|
|
|
|
- checkout
|
2021-04-20 19:29:14 +00:00
|
|
|
|
- rust_components
|
2021-03-29 16:55:50 +00:00
|
|
|
|
- cache_restore
|
2020-02-07 15:39:31 +00:00
|
|
|
|
- run:
|
|
|
|
|
name: Rust fmt
|
2020-02-14 13:01:39 +00:00
|
|
|
|
command: cargo fmt --all -- --check
|
2021-03-29 16:55:50 +00:00
|
|
|
|
- cache_save
|
2020-02-07 15:39:31 +00:00
|
|
|
|
lint:
|
|
|
|
|
docker:
|
2020-05-28 01:25:57 +00:00
|
|
|
|
- image: quay.io/influxdb/rust:ci
|
2021-03-29 16:55:50 +00:00
|
|
|
|
environment:
|
2021-08-17 10:09:18 +00:00
|
|
|
|
# Disable incremental compilation to avoid overhead. We are not preserving these files anyway.
|
|
|
|
|
CARGO_INCREMENTAL: "0"
|
|
|
|
|
# Disable full debug symbol generation to speed up CI build
|
|
|
|
|
# "1" means line tables only, which is useful for panic tracebacks.
|
|
|
|
|
RUSTFLAGS: "-C debuginfo=1"
|
2020-02-07 15:39:31 +00:00
|
|
|
|
steps:
|
|
|
|
|
- checkout
|
2021-04-20 19:29:14 +00:00
|
|
|
|
- rust_components
|
2021-03-29 16:55:50 +00:00
|
|
|
|
- cache_restore
|
2020-02-07 15:39:31 +00:00
|
|
|
|
- run:
|
|
|
|
|
name: Clippy
|
2020-05-08 14:24:01 +00:00
|
|
|
|
command: cargo clippy --all-targets --workspace -- -D warnings
|
2021-03-29 16:55:50 +00:00
|
|
|
|
- cache_save
|
2021-09-21 09:01:30 +00:00
|
|
|
|
cargo_audit:
|
|
|
|
|
docker:
|
|
|
|
|
- image: quay.io/influxdb/rust:ci
|
|
|
|
|
environment:
|
|
|
|
|
# Disable incremental compilation to avoid overhead. We are not preserving these files anyway.
|
|
|
|
|
CARGO_INCREMENTAL: "0"
|
|
|
|
|
# Disable full debug symbol generation to speed up CI build
|
|
|
|
|
# "1" means line tables only, which is useful for panic tracebacks.
|
|
|
|
|
RUSTFLAGS: "-C debuginfo=1"
|
|
|
|
|
steps:
|
|
|
|
|
- checkout
|
|
|
|
|
- rust_components
|
|
|
|
|
- cache_restore
|
|
|
|
|
- run:
|
|
|
|
|
name: Install Cargo Audit
|
|
|
|
|
command: cargo install --force cargo-audit
|
|
|
|
|
- run:
|
|
|
|
|
name: Cargo Audit
|
|
|
|
|
command: cargo audit
|
|
|
|
|
- cache_save
|
2021-04-27 10:54:33 +00:00
|
|
|
|
doc:
|
|
|
|
|
docker:
|
|
|
|
|
- image: quay.io/influxdb/rust:ci
|
|
|
|
|
environment:
|
2021-08-17 10:09:18 +00:00
|
|
|
|
# Disable incremental compilation to avoid overhead. We are not preserving these files anyway.
|
|
|
|
|
CARGO_INCREMENTAL: "0"
|
|
|
|
|
# Disable full debug symbol generation to speed up CI build
|
|
|
|
|
# "1" means line tables only, which is useful for panic tracebacks.
|
|
|
|
|
RUSTFLAGS: "-C debuginfo=1"
|
2021-04-27 10:54:33 +00:00
|
|
|
|
steps:
|
|
|
|
|
- checkout
|
|
|
|
|
- rust_components
|
|
|
|
|
- cache_restore
|
|
|
|
|
- run:
|
|
|
|
|
name: Cargo doc
|
2021-06-22 22:02:05 +00:00
|
|
|
|
# excluding datafusion because it's effectively a dependency masqueraded as workspace crate.
|
|
|
|
|
command: cargo doc --document-private-items --no-deps --workspace --exclude datafusion
|
2021-04-27 10:54:33 +00:00
|
|
|
|
- cache_save
|
2021-10-19 09:03:24 +00:00
|
|
|
|
- run:
|
|
|
|
|
name: Compress Docs
|
|
|
|
|
command: tar -cvzf rustdoc.tar.gz target/doc/
|
2021-06-22 22:02:05 +00:00
|
|
|
|
- store_artifacts:
|
2021-10-19 09:03:24 +00:00
|
|
|
|
path: rustdoc.tar.gz
|
2021-07-09 11:38:30 +00:00
|
|
|
|
|
2020-02-07 15:39:31 +00:00
|
|
|
|
test:
|
|
|
|
|
docker:
|
2020-05-28 01:25:57 +00:00
|
|
|
|
- image: quay.io/influxdb/rust:ci
|
2020-11-06 15:24:47 +00:00
|
|
|
|
resource_class: xlarge # use of a smaller executor tends crashes on link
|
2021-03-29 16:55:50 +00:00
|
|
|
|
environment:
|
2021-08-17 10:09:18 +00:00
|
|
|
|
# Disable incremental compilation to avoid overhead. We are not preserving these files anyway.
|
|
|
|
|
CARGO_INCREMENTAL: "0"
|
|
|
|
|
# Disable full debug symbol generation to speed up CI build
|
|
|
|
|
# "1" means line tables only, which is useful for panic tracebacks.
|
|
|
|
|
RUSTFLAGS: "-C debuginfo=1"
|
|
|
|
|
RUST_BACKTRACE: "1"
|
2020-02-07 15:39:31 +00:00
|
|
|
|
steps:
|
|
|
|
|
- checkout
|
2021-04-20 19:29:14 +00:00
|
|
|
|
- rust_components
|
2021-03-29 16:55:50 +00:00
|
|
|
|
- cache_restore
|
2020-02-07 15:39:31 +00:00
|
|
|
|
- run:
|
|
|
|
|
name: Cargo test
|
2021-09-22 17:30:37 +00:00
|
|
|
|
command: cargo test --workspace
|
2021-03-29 16:55:50 +00:00
|
|
|
|
- cache_save
|
|
|
|
|
|
2021-08-13 13:20:08 +00:00
|
|
|
|
# end to end tests with Heappy (heap profiling enabled)
|
|
|
|
|
test_heappy:
|
|
|
|
|
docker:
|
|
|
|
|
- image: quay.io/influxdb/rust:ci
|
|
|
|
|
resource_class: xlarge # use of a smaller executor tends crashes on link
|
|
|
|
|
environment:
|
2021-08-17 10:09:18 +00:00
|
|
|
|
# Disable incremental compilation to avoid overhead. We are not preserving these files anyway.
|
|
|
|
|
CARGO_INCREMENTAL: "0"
|
|
|
|
|
# Disable full debug symbol generation to speed up CI build
|
|
|
|
|
# "1" means line tables only, which is useful for panic tracebacks.
|
|
|
|
|
RUSTFLAGS: "-C debuginfo=1"
|
|
|
|
|
RUST_BACKTRACE: "1"
|
2021-08-13 13:20:08 +00:00
|
|
|
|
steps:
|
|
|
|
|
- checkout
|
|
|
|
|
- rust_components
|
|
|
|
|
- cache_restore
|
|
|
|
|
- run:
|
|
|
|
|
name: End to end tests (with heappy)
|
2021-08-19 16:36:14 +00:00
|
|
|
|
command: cargo test --no-default-features --features=heappy end_to_end
|
2021-08-13 13:20:08 +00:00
|
|
|
|
- cache_save
|
|
|
|
|
|
2021-09-09 14:24:24 +00:00
|
|
|
|
test_perf:
|
|
|
|
|
machine:
|
|
|
|
|
image: ubuntu-2004:202107-02
|
|
|
|
|
resource_class: xlarge
|
2021-09-13 23:11:59 +00:00
|
|
|
|
environment:
|
|
|
|
|
# Disable incremental compilation to avoid overhead. We are not preserving these files anyway.
|
|
|
|
|
CARGO_INCREMENTAL: "0"
|
|
|
|
|
# Disable full debug symbol generation to speed up CI build
|
|
|
|
|
# "1" means line tables only, which is useful for panic tracebacks.
|
|
|
|
|
RUSTFLAGS: "-C debuginfo=1"
|
|
|
|
|
RUST_BACKTRACE: "1"
|
2021-09-09 14:24:24 +00:00
|
|
|
|
steps:
|
|
|
|
|
- run: sudo apt update
|
|
|
|
|
- run:
|
|
|
|
|
name: Install required compile tools
|
|
|
|
|
command: sudo apt install curl clang lld pkg-config libssl-dev --yes --no-install-recommends
|
|
|
|
|
- checkout
|
|
|
|
|
|
|
|
|
|
- run:
|
2021-09-10 16:28:09 +00:00
|
|
|
|
name: Install rustup
|
|
|
|
|
command: scripts/install_rustup.sh
|
2021-09-09 14:24:24 +00:00
|
|
|
|
|
|
|
|
|
- run:
|
|
|
|
|
name: Install perf.py dependencies
|
|
|
|
|
command: python3 -m pip install -r perf/requirements.txt
|
|
|
|
|
|
|
|
|
|
- restore_cache:
|
|
|
|
|
keys:
|
|
|
|
|
- cargo-lock-{{ checksum "Cargo.lock" }}
|
|
|
|
|
- run:
|
|
|
|
|
name: Prime Rust build cache
|
2021-09-13 23:11:59 +00:00
|
|
|
|
command: cargo build --package influxdb_iox --bin influxdb_iox --package iox_data_generator --bin iox_data_generator
|
2021-09-09 14:24:24 +00:00
|
|
|
|
- save_cache:
|
|
|
|
|
key: cargo-lock-{{ checksum "Cargo.lock" }}
|
|
|
|
|
paths:
|
|
|
|
|
- target
|
|
|
|
|
|
|
|
|
|
- run:
|
|
|
|
|
name: Run basic perf test to ensure that perf.py works
|
|
|
|
|
command: perf/perf.py --debug --no-volumes --object-store memory battery-0
|
|
|
|
|
|
2021-06-09 18:02:06 +00:00
|
|
|
|
test_kafka_integration:
|
|
|
|
|
machine: true
|
|
|
|
|
resource_class: xlarge
|
2021-06-23 20:08:03 +00:00
|
|
|
|
environment:
|
2021-08-17 10:09:18 +00:00
|
|
|
|
# Disable incremental compilation to avoid overhead. We are not preserving these files anyway.
|
|
|
|
|
CARGO_INCREMENTAL: "0"
|
|
|
|
|
# Disable full debug symbol generation to speed up CI build
|
|
|
|
|
# "1" means line tables only, which is useful for panic tracebacks.
|
|
|
|
|
RUSTFLAGS: "-C debuginfo=1"
|
|
|
|
|
RUST_BACKTRACE: "1"
|
2021-06-09 18:02:06 +00:00
|
|
|
|
steps:
|
|
|
|
|
- checkout
|
|
|
|
|
- run:
|
|
|
|
|
name: Run integration tests with Docker Compose
|
|
|
|
|
command: docker-compose -f docker/ci-kafka-docker-compose.yml up --build --force-recreate --exit-code-from rust
|
|
|
|
|
|
2021-04-05 13:21:32 +00:00
|
|
|
|
# Integration tests for the influxdb2_client crate against InfluxDB 2.0 OSS.
|
|
|
|
|
test_influxdb2_client:
|
|
|
|
|
docker:
|
|
|
|
|
- image: quay.io/influxdb/rust:ci
|
|
|
|
|
environment:
|
2021-08-17 10:09:18 +00:00
|
|
|
|
# Disable incremental compilation to avoid overhead. We are not preserving these files anyway.
|
|
|
|
|
CARGO_INCREMENTAL: "0"
|
|
|
|
|
# Disable full debug symbol generation to speed up CI build
|
|
|
|
|
# "1" means line tables only, which is useful for panic tracebacks.
|
|
|
|
|
RUSTFLAGS: "-C debuginfo=1"
|
|
|
|
|
RUST_BACKTRACE: "1"
|
2021-04-05 13:21:32 +00:00
|
|
|
|
steps:
|
|
|
|
|
- checkout
|
2021-04-20 19:29:14 +00:00
|
|
|
|
- rust_components
|
2021-04-05 13:21:32 +00:00
|
|
|
|
- cache_restore
|
|
|
|
|
- run:
|
|
|
|
|
name: Cargo test
|
2021-04-21 14:32:07 +00:00
|
|
|
|
command: TEST_INTEGRATION=1 INFLUXDB_IOX_INTEGRATION_LOCAL=1 cargo test -p influxdb2_client
|
2021-04-05 13:21:32 +00:00
|
|
|
|
- cache_save
|
|
|
|
|
|
2020-11-26 13:38:27 +00:00
|
|
|
|
# Build a dev binary.
|
|
|
|
|
#
|
|
|
|
|
# Compiles a binary with the default ("dev") cargo profile from the iox source
|
|
|
|
|
# using the latest ci_image.
|
2020-02-07 15:39:31 +00:00
|
|
|
|
build:
|
|
|
|
|
docker:
|
2020-05-28 01:25:57 +00:00
|
|
|
|
- image: quay.io/influxdb/rust:ci
|
2021-03-29 16:55:50 +00:00
|
|
|
|
resource_class: xlarge # use of a smaller executor tends crashes on link
|
|
|
|
|
environment:
|
2021-08-17 10:09:18 +00:00
|
|
|
|
# Disable incremental compilation to avoid overhead. We are not preserving these files anyway.
|
|
|
|
|
CARGO_INCREMENTAL: "0"
|
|
|
|
|
# Disable full debug symbol generation to speed up CI build
|
|
|
|
|
# "1" means line tables only, which is useful for panic tracebacks.
|
|
|
|
|
RUSTFLAGS: "-C debuginfo=1"
|
2020-02-07 15:39:31 +00:00
|
|
|
|
steps:
|
|
|
|
|
- checkout
|
2021-04-20 19:29:14 +00:00
|
|
|
|
- rust_components
|
2021-03-29 16:55:50 +00:00
|
|
|
|
- cache_restore
|
2020-02-07 15:39:31 +00:00
|
|
|
|
- run:
|
|
|
|
|
name: Cargo build
|
2020-05-08 14:24:01 +00:00
|
|
|
|
command: cargo build --workspace
|
2021-03-29 16:55:50 +00:00
|
|
|
|
- run:
|
|
|
|
|
name: Build benches
|
|
|
|
|
command: cargo test --workspace --benches --no-run
|
2021-07-09 11:38:30 +00:00
|
|
|
|
- run:
|
2021-08-13 13:11:32 +00:00
|
|
|
|
name: Build with object store + exporter support + HEAP profiling
|
2021-09-22 17:30:37 +00:00
|
|
|
|
command: cargo build --no-default-features --features="aws,gcp,azure,heappy,pprof"
|
2021-03-29 16:55:50 +00:00
|
|
|
|
- cache_save
|
|
|
|
|
|
|
|
|
|
# Lint protobufs.
|
|
|
|
|
protobuf-lint:
|
|
|
|
|
docker:
|
|
|
|
|
- image: bufbuild/buf:0.40.0
|
2021-10-21 15:06:45 +00:00
|
|
|
|
environment:
|
|
|
|
|
# Value to look for to skip breaking changes check
|
|
|
|
|
SKIP_LABEL: "https://api.github.com/repos/influxdata/influxdb_iox/labels/incompatible%20protobuf"
|
2021-03-29 16:55:50 +00:00
|
|
|
|
steps:
|
|
|
|
|
- checkout
|
|
|
|
|
- run:
|
|
|
|
|
name: buf lint
|
|
|
|
|
command: buf lint
|
2021-10-21 12:37:24 +00:00
|
|
|
|
- run:
|
|
|
|
|
name: buf breaking changes
|
|
|
|
|
command: |
|
|
|
|
|
echo "If you want to make changes forbidden by this lint, please"
|
2021-10-21 15:06:45 +00:00
|
|
|
|
echo "coordinate with the conductor team, add the 'incompatible protobuf' label"
|
|
|
|
|
echo "to the PR, and rerun this test"
|
|
|
|
|
# Check if label is present using github API:
|
|
|
|
|
# Inspired by https://discuss.circleci.com/t/tag-label-filter/11158
|
|
|
|
|
if wget -O - https://api.github.com/repos/influxdata/influxdb_iox/issues/$(echo $CIRCLE_PULL_REQUEST | grep -oE "[^/pull]+$") | grep "$SKIP_LABEL" ; then echo "SKIPPING (FOUND LABEL)" && exit ; else echo "CHECKING (NO LABEL FOUND)"; fi
|
2021-10-21 12:37:24 +00:00
|
|
|
|
git fetch origin main
|
|
|
|
|
# compare against only changes in this branch (not against
|
|
|
|
|
# other stuff that may have been added to master since last merge)
|
|
|
|
|
MERGE_BASE=$(git merge-base origin/main $CIRCLE_BRANCH) sh -c 'buf breaking --against ".git#ref=$MERGE_BASE"'
|
2021-03-29 16:55:50 +00:00
|
|
|
|
|
2021-10-12 19:34:54 +00:00
|
|
|
|
# Check that any generated files are is up-to-date with the changes in this PR.
|
|
|
|
|
# named "check-flatbuffers" because that name is hardcoded into github checks
|
2021-04-07 20:33:38 +00:00
|
|
|
|
check-flatbuffers:
|
|
|
|
|
docker:
|
|
|
|
|
- image: quay.io/influxdb/rust:ci
|
|
|
|
|
resource_class: xlarge # use of a smaller executor tends crashes on link
|
|
|
|
|
steps:
|
|
|
|
|
- checkout
|
2021-04-20 19:29:14 +00:00
|
|
|
|
- rust_components # Regenerating flatbuffers uses rustfmt
|
2021-10-12 19:34:54 +00:00
|
|
|
|
- run:
|
|
|
|
|
name: Check Query Tests
|
|
|
|
|
command: ./query_tests/check-generated.sh
|
2021-04-07 20:33:38 +00:00
|
|
|
|
- run:
|
|
|
|
|
name: Check Flatbuffers
|
2021-05-06 11:36:23 +00:00
|
|
|
|
command: INFLUXDB_IOX_INTEGRATION_LOCAL=1 ./entry/check-flatbuffers.sh
|
2021-04-07 20:33:38 +00:00
|
|
|
|
|
2020-11-26 13:38:27 +00:00
|
|
|
|
# Compile a cargo "release" profile binary for branches that end in `/perf`
|
|
|
|
|
#
|
|
|
|
|
# Uses the latest ci_image (influxdb/rust below) to build a release binary and
|
|
|
|
|
# copies it to a minimal container image based upon `rust:slim-buster`. This
|
|
|
|
|
# minimal image is then pushed to `quay.io/influxdb/fusion:${BRANCH}` with '/'
|
|
|
|
|
# repaced by '.' - as an example:
|
|
|
|
|
#
|
2021-03-29 16:55:50 +00:00
|
|
|
|
# git branch: dom/my-awesome-feature/perf
|
2020-11-26 13:38:27 +00:00
|
|
|
|
# container: quay.io/influxdb/fusion:dom.my-awesome-feature.perf
|
|
|
|
|
#
|
|
|
|
|
# Subsequent CI runs will overwrite the tag if you push more changes, so watch
|
|
|
|
|
# out for parallel CI runs!
|
|
|
|
|
#
|
|
|
|
|
# To change the contents of the build container, modify docker/Dockerfile.ci
|
2021-02-25 15:05:54 +00:00
|
|
|
|
# To change the final release container, modify docker/Dockerfile.iox
|
2020-06-29 19:33:41 +00:00
|
|
|
|
perf_image:
|
|
|
|
|
docker:
|
|
|
|
|
- image: quay.io/influxdb/rust:ci
|
2021-06-07 12:03:55 +00:00
|
|
|
|
resource_class: xlarge # use of a smaller executor tends crashes on link
|
2021-03-29 16:55:50 +00:00
|
|
|
|
environment:
|
2021-08-17 10:09:18 +00:00
|
|
|
|
# Disable incremental compilation to avoid overhead. We are not preserving these files anyway.
|
|
|
|
|
CARGO_INCREMENTAL: "0"
|
|
|
|
|
# We keep the debug symbols (Enabled in Cargo.toml as debug = true)
|
|
|
|
|
# workaround dynamic CPU detection bug in croaring
|
|
|
|
|
# https://github.com/influxdata/influxdb_iox/pull/2119
|
|
|
|
|
ROARING_ARCH: "haswell"
|
|
|
|
|
# Use avx512 instructions to take full advantage of the CPUs instruction set
|
|
|
|
|
RUSTFLAGS: "-C target-feature=+avx2"
|
2020-06-29 19:33:41 +00:00
|
|
|
|
steps:
|
|
|
|
|
- checkout
|
2021-04-20 19:29:14 +00:00
|
|
|
|
- rust_components
|
2021-03-29 16:55:50 +00:00
|
|
|
|
- cache_restore
|
2020-06-29 19:33:41 +00:00
|
|
|
|
- run:
|
2020-07-08 14:02:58 +00:00
|
|
|
|
name: Cargo release build with target arch set for CRoaring
|
2021-09-27 16:31:19 +00:00
|
|
|
|
command: cargo build --release --no-default-features --features="aws,gcp,azure,jemalloc_replacing_malloc"
|
2021-04-26 10:51:33 +00:00
|
|
|
|
- run: |
|
|
|
|
|
echo sha256sum after build is
|
|
|
|
|
sha256sum target/release/influxdb_iox
|
2021-10-25 16:29:28 +00:00
|
|
|
|
- run:
|
|
|
|
|
name: Print rustc target CPU options
|
|
|
|
|
command: target/release/influxdb_iox debug print-cpu
|
2020-06-29 19:33:41 +00:00
|
|
|
|
- setup_remote_docker:
|
2021-04-27 11:30:07 +00:00
|
|
|
|
# There seems to be a cache invalidation bug in docker
|
|
|
|
|
# or in the way that circleci implements layer caching.
|
|
|
|
|
# Disabling for now, and tracked further investigations
|
|
|
|
|
# in https://github.com/influxdata/k8s-idpe/issues/3038
|
|
|
|
|
docker_layer_caching: false
|
2021-08-17 10:09:18 +00:00
|
|
|
|
version: 19.03.14
|
2020-06-29 19:33:41 +00:00
|
|
|
|
- run: |
|
|
|
|
|
sudo apt-get update
|
|
|
|
|
sudo apt-get install -y docker.io
|
|
|
|
|
- run: |
|
|
|
|
|
echo "$QUAY_PASS" | docker login quay.io --username $QUAY_USER --password-stdin
|
2021-08-17 10:09:18 +00:00
|
|
|
|
- run:
|
|
|
|
|
# Docker has functionality to support per-Dockerfile .dockerignore
|
|
|
|
|
# This was added in https://github.com/moby/buildkit/pull/901
|
|
|
|
|
# And included in 19.03 - https://docs.docker.com/engine/release-notes/19.03/#19030
|
|
|
|
|
# Unfortunately CircleCI only seems to understand a root-level .dockerignore
|
|
|
|
|
# So we need to move it into position for it to not send ~10GB of build context
|
|
|
|
|
name: Fudge CircleCI Docker Context
|
|
|
|
|
command: mv docker/Dockerfile.iox.dockerignore .dockerignore
|
2020-06-29 19:33:41 +00:00
|
|
|
|
- run: |
|
|
|
|
|
BRANCH=$(git rev-parse --abbrev-ref HEAD | tr '/' '.')
|
2021-04-27 07:34:36 +00:00
|
|
|
|
echo sha256sum after build is
|
|
|
|
|
sha256sum target/release/influxdb_iox
|
2021-04-29 15:54:08 +00:00
|
|
|
|
COMMIT_SHA=$(git rev-parse --short HEAD)
|
|
|
|
|
docker build -t quay.io/influxdb/fusion:$COMMIT_SHA -f docker/Dockerfile.iox .
|
|
|
|
|
docker push quay.io/influxdb/fusion:$COMMIT_SHA
|
|
|
|
|
echo "export COMMIT_SHA=${COMMIT_SHA}" >> $BASH_ENV
|
2021-01-14 15:32:16 +00:00
|
|
|
|
- run:
|
|
|
|
|
name: Deploy tags
|
2021-04-29 15:54:08 +00:00
|
|
|
|
command: ./.circleci/get-deploy-tags.sh "${COMMIT_SHA}"
|
2021-03-29 16:55:50 +00:00
|
|
|
|
- cache_save
|
2020-02-07 15:39:31 +00:00
|
|
|
|
|
2020-11-26 13:38:27 +00:00
|
|
|
|
# Prepare the CI image used for other tasks.
|
|
|
|
|
#
|
|
|
|
|
# A nightly job (scheduled below in the `workflows` section) to build the CI
|
|
|
|
|
# image (influxdb/rust) used for the rest of the checks.
|
|
|
|
|
#
|
|
|
|
|
# To modify the contents of the CI image, update docker/Dockerfile.ci
|
|
|
|
|
ci_image:
|
|
|
|
|
machine: true
|
|
|
|
|
resource_class: xlarge
|
|
|
|
|
steps:
|
|
|
|
|
- checkout
|
|
|
|
|
- run: |
|
|
|
|
|
echo "$QUAY_PASS" | docker login quay.io --username $QUAY_USER --password-stdin
|
|
|
|
|
- run: |
|
|
|
|
|
COMMIT_SHA=$(git rev-parse --short HEAD)
|
2021-06-17 14:48:06 +00:00
|
|
|
|
RUST_VERSION=$(sed -E -ne 's/channel = "(.*)"/\1/p' rust-toolchain.toml)
|
|
|
|
|
docker build -t quay.io/influxdb/rust:$COMMIT_SHA -f docker/Dockerfile.ci --build-arg RUST_VERSION=$RUST_VERSION .
|
2020-11-26 13:38:27 +00:00
|
|
|
|
docker tag quay.io/influxdb/rust:$COMMIT_SHA quay.io/influxdb/rust:ci
|
|
|
|
|
docker push quay.io/influxdb/rust:$COMMIT_SHA
|
|
|
|
|
docker push quay.io/influxdb/rust:ci
|
|
|
|
|
|
2020-02-07 15:39:31 +00:00
|
|
|
|
workflows:
|
|
|
|
|
version: 2
|
2021-03-29 16:55:50 +00:00
|
|
|
|
|
|
|
|
|
# CI for all pull requests.
|
|
|
|
|
ci:
|
|
|
|
|
jobs:
|
|
|
|
|
- fmt
|
|
|
|
|
- lint
|
2021-09-21 09:01:30 +00:00
|
|
|
|
- cargo_audit
|
2021-03-29 16:55:50 +00:00
|
|
|
|
- protobuf-lint
|
|
|
|
|
- test
|
2021-08-13 13:20:08 +00:00
|
|
|
|
- test_heappy
|
2021-09-09 14:24:24 +00:00
|
|
|
|
- test_perf
|
2021-06-09 18:02:06 +00:00
|
|
|
|
- test_kafka_integration
|
2021-04-05 13:21:32 +00:00
|
|
|
|
- test_influxdb2_client
|
2021-03-29 16:55:50 +00:00
|
|
|
|
- build
|
2021-04-07 20:33:38 +00:00
|
|
|
|
- check-flatbuffers
|
2021-04-27 10:54:33 +00:00
|
|
|
|
- doc
|
2021-03-29 16:55:50 +00:00
|
|
|
|
|
|
|
|
|
# Internal pipeline for perf builds.
|
2020-11-26 16:46:59 +00:00
|
|
|
|
#
|
|
|
|
|
# Filter ensures this only runs for git branches ending in `/perf`.
|
|
|
|
|
perf_build:
|
2020-02-07 15:39:31 +00:00
|
|
|
|
jobs:
|
2020-11-26 16:46:59 +00:00
|
|
|
|
- fmt:
|
|
|
|
|
filters:
|
|
|
|
|
branches:
|
2021-04-28 08:12:34 +00:00
|
|
|
|
only: main
|
2020-11-26 16:46:59 +00:00
|
|
|
|
- lint:
|
|
|
|
|
filters:
|
|
|
|
|
branches:
|
2021-04-28 08:12:34 +00:00
|
|
|
|
only: main
|
2021-09-21 09:01:30 +00:00
|
|
|
|
- cargo_audit:
|
|
|
|
|
filters:
|
|
|
|
|
branches:
|
|
|
|
|
only: main
|
2020-11-26 16:46:59 +00:00
|
|
|
|
- test:
|
|
|
|
|
filters:
|
|
|
|
|
branches:
|
2021-04-28 08:12:34 +00:00
|
|
|
|
only: main
|
2020-11-26 16:46:59 +00:00
|
|
|
|
- build:
|
|
|
|
|
filters:
|
|
|
|
|
branches:
|
2021-04-28 08:12:34 +00:00
|
|
|
|
only: main
|
2020-06-29 19:33:41 +00:00
|
|
|
|
- perf_image:
|
2020-11-26 16:46:59 +00:00
|
|
|
|
filters:
|
|
|
|
|
branches:
|
2021-04-28 08:12:34 +00:00
|
|
|
|
only: main
|
2020-06-29 19:33:41 +00:00
|
|
|
|
requires: # Only do a release build if all tests have passed
|
|
|
|
|
- fmt
|
|
|
|
|
- lint
|
2021-09-21 09:01:30 +00:00
|
|
|
|
- cargo_audit
|
2020-06-29 19:33:41 +00:00
|
|
|
|
- test
|
|
|
|
|
- build
|
2021-03-29 16:55:50 +00:00
|
|
|
|
|
2020-11-26 16:46:59 +00:00
|
|
|
|
# Nightly rebuild of the build container
|
2020-05-28 01:25:57 +00:00
|
|
|
|
ci_image:
|
|
|
|
|
triggers:
|
|
|
|
|
- schedule:
|
|
|
|
|
cron: "0 5 * * *"
|
|
|
|
|
filters:
|
|
|
|
|
branches:
|
|
|
|
|
only:
|
2020-11-11 11:40:38 +00:00
|
|
|
|
- main
|
2020-05-28 01:25:57 +00:00
|
|
|
|
jobs:
|
|
|
|
|
- ci_image
|