fork of https://github.com/oxigraph/rocksdb and https://github.com/facebook/rocksdb for nextgraph and oxigraph
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
971 lines
32 KiB
971 lines
32 KiB
version: 2.1
|
|
|
|
orbs:
|
|
win: circleci/windows@2.4.0
|
|
|
|
aliases:
|
|
- ¬ify-on-main-failure
|
|
fail_only: true
|
|
only_for_branches: main
|
|
|
|
commands:
|
|
install-cmake-on-macos:
|
|
steps:
|
|
- run:
|
|
name: Install cmake on macos
|
|
command: |
|
|
HOMEBREW_NO_AUTO_UPDATE=1 brew install cmake
|
|
|
|
install-jdk8-on-macos:
|
|
steps:
|
|
- run:
|
|
name: Install JDK 8 on macos
|
|
command: |
|
|
brew install --cask adoptopenjdk/openjdk/adoptopenjdk8
|
|
|
|
increase-max-open-files-on-macos:
|
|
steps:
|
|
- run:
|
|
name: Increase max open files
|
|
command: |
|
|
sudo sysctl -w kern.maxfiles=1048576
|
|
sudo sysctl -w kern.maxfilesperproc=1048576
|
|
sudo launchctl limit maxfiles 1048576
|
|
|
|
pre-steps:
|
|
steps:
|
|
- checkout
|
|
- run:
|
|
name: Setup Environment Variables
|
|
command: |
|
|
echo "export GTEST_THROW_ON_FAILURE=0" >> $BASH_ENV
|
|
echo "export GTEST_OUTPUT=\"xml:/tmp/test-results/\"" >> $BASH_ENV
|
|
echo "export SKIP_FORMAT_BUCK_CHECKS=1" >> $BASH_ENV
|
|
echo "export GTEST_COLOR=1" >> $BASH_ENV
|
|
echo "export CTEST_OUTPUT_ON_FAILURE=1" >> $BASH_ENV
|
|
echo "export CTEST_TEST_TIMEOUT=300" >> $BASH_ENV
|
|
echo "export ZLIB_DOWNLOAD_BASE=https://rocksdb-deps.s3.us-west-2.amazonaws.com/pkgs/zlib" >> $BASH_ENV
|
|
echo "export BZIP2_DOWNLOAD_BASE=https://rocksdb-deps.s3.us-west-2.amazonaws.com/pkgs/bzip2" >> $BASH_ENV
|
|
echo "export SNAPPY_DOWNLOAD_BASE=https://rocksdb-deps.s3.us-west-2.amazonaws.com/pkgs/snappy" >> $BASH_ENV
|
|
echo "export LZ4_DOWNLOAD_BASE=https://rocksdb-deps.s3.us-west-2.amazonaws.com/pkgs/lz4" >> $BASH_ENV
|
|
echo "export ZSTD_DOWNLOAD_BASE=https://rocksdb-deps.s3.us-west-2.amazonaws.com/pkgs/zstd" >> $BASH_ENV
|
|
|
|
pre-steps-macos:
|
|
steps:
|
|
- pre-steps
|
|
|
|
post-steps:
|
|
steps:
|
|
- store_test_results: # store test result if there's any
|
|
path: /tmp/test-results
|
|
- store_artifacts: # store LOG for debugging if there's any
|
|
path: LOG
|
|
- run: # on fail, compress Test Logs for diagnosing the issue
|
|
name: Compress Test Logs
|
|
command: tar -cvzf t.tar.gz t
|
|
when: on_fail
|
|
- store_artifacts: # on fail, store Test Logs for diagnosing the issue
|
|
path: t.tar.gz
|
|
destination: test_logs
|
|
when: on_fail
|
|
|
|
install-clang-10:
|
|
steps:
|
|
- run:
|
|
name: Install Clang 10
|
|
command: |
|
|
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
|
|
echo "deb http://apt.llvm.org/focal/ llvm-toolchain-focal-10 main" | sudo tee -a /etc/apt/sources.list
|
|
echo "deb-src http://apt.llvm.org/focal/ llvm-toolchain-focal-10 main" | sudo tee -a /etc/apt/sources.list
|
|
echo "APT::Acquire::Retries \"10\";" | sudo tee -a /etc/apt/apt.conf.d/80-retries # llvm.org unreliable
|
|
sudo apt-get update -y && sudo apt-get install -y clang-10
|
|
|
|
install-clang-13:
|
|
steps:
|
|
- run:
|
|
name: Install Clang 13
|
|
command: |
|
|
echo "deb http://apt.llvm.org/focal/ llvm-toolchain-focal-13 main" | sudo tee -a /etc/apt/sources.list
|
|
echo "deb-src http://apt.llvm.org/focal/ llvm-toolchain-focal-13 main" | sudo tee -a /etc/apt/sources.list
|
|
echo "APT::Acquire::Retries \"10\";" | sudo tee -a /etc/apt/apt.conf.d/80-retries # llvm.org unreliable
|
|
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key|sudo apt-key add -
|
|
sudo apt-get update -y && sudo apt-get install -y clang-13
|
|
|
|
install-gflags:
|
|
steps:
|
|
- run:
|
|
name: Install gflags
|
|
command: |
|
|
sudo apt-get update -y && sudo apt-get install -y libgflags-dev
|
|
|
|
install-benchmark:
|
|
steps:
|
|
- run:
|
|
name: Install ninja build
|
|
command: sudo apt-get update -y && sudo apt-get install -y ninja-build
|
|
- run:
|
|
name: Install benchmark
|
|
command: |
|
|
git clone --depth 1 --branch v1.6.1 https://github.com/google/benchmark.git ~/benchmark
|
|
cd ~/benchmark && mkdir build && cd build
|
|
cmake .. -GNinja -DCMAKE_BUILD_TYPE=Release -DBENCHMARK_ENABLE_GTEST_TESTS=0
|
|
ninja && sudo ninja install
|
|
|
|
install-valgrind:
|
|
steps:
|
|
- run:
|
|
name: Install valgrind
|
|
command: sudo apt-get update -y && sudo apt-get install -y valgrind
|
|
|
|
upgrade-cmake:
|
|
steps:
|
|
- run:
|
|
name: Upgrade cmake
|
|
command: |
|
|
sudo apt remove --purge cmake
|
|
sudo snap install cmake --classic
|
|
|
|
install-gflags-on-macos:
|
|
steps:
|
|
- run:
|
|
name: Install gflags on macos
|
|
command: |
|
|
HOMEBREW_NO_AUTO_UPDATE=1 brew install gflags
|
|
|
|
install-gtest-parallel:
|
|
steps:
|
|
- run:
|
|
name: Install gtest-parallel
|
|
command: |
|
|
git clone --single-branch --branch master --depth 1 https://github.com/google/gtest-parallel.git ~/gtest-parallel
|
|
echo 'export PATH=$HOME/gtest-parallel:$PATH' >> $BASH_ENV
|
|
|
|
install-compression-libs:
|
|
steps:
|
|
- run:
|
|
name: Install compression libs
|
|
command: |
|
|
sudo apt-get update -y && sudo apt-get install -y libsnappy-dev zlib1g-dev libbz2-dev liblz4-dev libzstd-dev
|
|
|
|
install-streaming-compress-libs:
|
|
steps:
|
|
- run:
|
|
name: Install streaming compression libs
|
|
command: |
|
|
sudo apt-get update -y && sudo apt-get install -y libzstd-dev
|
|
|
|
install-libprotobuf-mutator:
|
|
steps:
|
|
- run:
|
|
name: Install libprotobuf-mutator libs
|
|
command: |
|
|
git clone -b v1.0 git@github.com:google/libprotobuf-mutator.git ~/libprotobuf-mutator
|
|
cd ~/libprotobuf-mutator && git checkout ffd86a32874e5c08a143019aad1aaf0907294c9f && mkdir build && cd build
|
|
cmake .. -GNinja -DCMAKE_C_COMPILER=clang-13 -DCMAKE_CXX_COMPILER=clang++-13 -DCMAKE_BUILD_TYPE=Release -DLIB_PROTO_MUTATOR_DOWNLOAD_PROTOBUF=ON
|
|
ninja && sudo ninja install
|
|
- run:
|
|
name: Setup environment variables
|
|
command: |
|
|
echo "export PKG_CONFIG_PATH=/usr/local/OFF/:~/libprotobuf-mutator/build/external.protobuf/lib/pkgconfig/" >> $BASH_ENV
|
|
echo "export PROTOC_BIN=~/libprotobuf-mutator/build/external.protobuf/bin/protoc" >> $BASH_ENV
|
|
|
|
build-for-benchmarks:
|
|
steps:
|
|
- pre-steps
|
|
- run:
|
|
name: "Linux build for benchmarks"
|
|
command: #sized for the resource-class rocksdb-benchmark-sys1
|
|
make V=1 J=8 -j8 release
|
|
|
|
perform-benchmarks:
|
|
steps:
|
|
- run:
|
|
name: "Run basic benchmark, 5 min"
|
|
command: ./tools/benchmark.sh fillseq_enable_wal
|
|
environment:
|
|
LD_LIBRARY_PATH: /usr/local/lib
|
|
DB_DIR: /tmp/rocksdb-benchmark-datadir
|
|
WAL_DIR: /tmp/rocksdb-benchmark-waldir
|
|
OUTPUT_DIR: /tmp/benchmark-results
|
|
NUM_KEYS: 10000000
|
|
|
|
post-benchmarks:
|
|
steps:
|
|
- store_artifacts: # store the benchmark output
|
|
path: /tmp/benchmark-results
|
|
destination: test_logs
|
|
- run:
|
|
name: Send benchmark report to visualisation
|
|
command: ./build_tools/benchmark_log_tool.py --tsvfile /tmp/benchmark-results/report.tsv --esdocument https://search-rocksdb-bench-k2izhptfeap2hjfxteolsgsynm.us-west-2.es.amazonaws.com/bench_test3/_doc
|
|
|
|
executors:
|
|
windows-2xlarge:
|
|
machine:
|
|
image: 'windows-server-2019-vs2019:stable'
|
|
resource_class: windows.2xlarge
|
|
shell: bash.exe
|
|
|
|
jobs:
|
|
build-macos:
|
|
macos:
|
|
xcode: 12.5.1
|
|
resource_class: large
|
|
environment:
|
|
ROCKSDB_DISABLE_JEMALLOC: 1 # jemalloc cause env_test hang, disable it for now
|
|
steps:
|
|
- increase-max-open-files-on-macos
|
|
- install-gflags-on-macos
|
|
- pre-steps-macos
|
|
- run: ulimit -S -n `ulimit -H -n` && OPT=-DCIRCLECI make V=1 J=32 -j32 all
|
|
- post-steps
|
|
|
|
build-macos-cmake:
|
|
macos:
|
|
xcode: 12.5.1
|
|
resource_class: large
|
|
parameters:
|
|
run_even_tests:
|
|
description: run even or odd tests, used to split tests to 2 groups
|
|
type: boolean
|
|
default: true
|
|
steps:
|
|
- increase-max-open-files-on-macos
|
|
- install-cmake-on-macos
|
|
- install-gflags-on-macos
|
|
- pre-steps-macos
|
|
- run:
|
|
name: "cmake generate project file"
|
|
command: ulimit -S -n `ulimit -H -n` && mkdir build && cd build && cmake -DWITH_GFLAGS=1 ..
|
|
- run:
|
|
name: "Build tests"
|
|
command: cd build && make V=1 -j32
|
|
- when:
|
|
condition: << parameters.run_even_tests >>
|
|
steps:
|
|
- run:
|
|
name: "Run even tests"
|
|
command: ulimit -S -n `ulimit -H -n` && cd build && ctest -j32 -I 0,,2
|
|
- when:
|
|
condition:
|
|
not: << parameters.run_even_tests >>
|
|
steps:
|
|
- run:
|
|
name: "Run odd tests"
|
|
command: ulimit -S -n `ulimit -H -n` && cd build && ctest -j32 -I 1,,2
|
|
- post-steps
|
|
|
|
build-linux:
|
|
machine:
|
|
image: ubuntu-2004:202111-02
|
|
resource_class: 2xlarge
|
|
steps:
|
|
- pre-steps
|
|
- install-gflags
|
|
- install-streaming-compress-libs
|
|
- run: make V=1 J=32 -j32 check
|
|
- post-steps
|
|
|
|
build-linux-encrypted_env-no_compression:
|
|
machine:
|
|
image: ubuntu-2004:202111-02
|
|
resource_class: 2xlarge
|
|
steps:
|
|
- pre-steps
|
|
- install-gflags
|
|
- run: ENCRYPTED_ENV=1 ROCKSDB_DISABLE_SNAPPY=1 ROCKSDB_DISABLE_ZLIB=1 ROCKSDB_DISABLE_BZIP=1 ROCKSDB_DISABLE_LZ4=1 ROCKSDB_DISABLE_ZSTD=1 make V=1 J=32 -j32 check
|
|
- run: |
|
|
./sst_dump --help | egrep -q 'Supported compression types: kNoCompression$' # Verify no compiled in compression
|
|
- post-steps
|
|
|
|
build-linux-shared_lib-alt_namespace-status_checked:
|
|
machine:
|
|
image: ubuntu-2004:202111-02
|
|
resource_class: 2xlarge
|
|
steps:
|
|
- pre-steps
|
|
- install-gflags
|
|
- run: ASSERT_STATUS_CHECKED=1 TEST_UINT128_COMPAT=1 ROCKSDB_MODIFY_NPHASH=1 LIB_MODE=shared OPT="-DROCKSDB_NAMESPACE=alternative_rocksdb_ns" make V=1 -j32 check
|
|
- post-steps
|
|
|
|
build-linux-release:
|
|
machine:
|
|
image: ubuntu-2004:202111-02
|
|
resource_class: 2xlarge
|
|
steps:
|
|
- checkout # check out the code in the project directory
|
|
- run: make V=1 -j32 release
|
|
- run: if ./db_stress --version; then false; else true; fi # ensure without gflags
|
|
- install-gflags
|
|
- run: make V=1 -j32 release
|
|
- run: ./db_stress --version # ensure with gflags
|
|
- post-steps
|
|
|
|
build-linux-release-rtti:
|
|
machine:
|
|
image: ubuntu-2004:202111-02
|
|
resource_class: xlarge
|
|
steps:
|
|
- checkout # check out the code in the project directory
|
|
- run: make clean
|
|
- run: USE_RTTI=1 DEBUG_LEVEL=0 make V=1 -j16 static_lib tools db_bench
|
|
- run: if ./db_stress --version; then false; else true; fi # ensure without gflags
|
|
- run: sudo apt-get update -y && sudo apt-get install -y libgflags-dev
|
|
- run: make clean
|
|
- run: USE_RTTI=1 DEBUG_LEVEL=0 make V=1 -j16 static_lib tools db_bench
|
|
- run: ./db_stress --version # ensure with gflags
|
|
|
|
build-linux-lite:
|
|
machine:
|
|
image: ubuntu-2004:202111-02
|
|
resource_class: large
|
|
steps:
|
|
- pre-steps
|
|
- install-gflags
|
|
- run: LITE=1 make V=1 J=8 -j8 check
|
|
- post-steps
|
|
|
|
build-linux-lite-release:
|
|
machine:
|
|
image: ubuntu-2004:202111-02
|
|
resource_class: large
|
|
steps:
|
|
- checkout # check out the code in the project directory
|
|
- run: LITE=1 make V=1 -j8 release
|
|
- run: if ./db_stress --version; then false; else true; fi # ensure without gflags
|
|
- install-gflags
|
|
- run: LITE=1 make V=1 -j8 release
|
|
- run: ./db_stress --version # ensure with gflags
|
|
- post-steps
|
|
|
|
build-linux-clang-no_test_run:
|
|
machine:
|
|
image: ubuntu-2004:202111-02
|
|
resource_class: xlarge
|
|
steps:
|
|
- checkout # check out the code in the project directory
|
|
- run: sudo apt-get update -y && sudo apt-get install -y clang libgflags-dev libtbb-dev
|
|
- run: CC=clang CXX=clang++ USE_CLANG=1 PORTABLE=1 make V=1 -j16 all
|
|
- post-steps
|
|
|
|
build-linux-clang10-asan:
|
|
machine:
|
|
image: ubuntu-2004:202111-02
|
|
resource_class: 2xlarge
|
|
steps:
|
|
- pre-steps
|
|
- install-gflags
|
|
- install-clang-10
|
|
- run: COMPILE_WITH_ASAN=1 CC=clang-10 CXX=clang++-10 ROCKSDB_DISABLE_ALIGNED_NEW=1 USE_CLANG=1 make V=1 -j32 check # aligned new doesn't work for reason we haven't figured out
|
|
- post-steps
|
|
|
|
build-linux-clang10-mini-tsan:
|
|
machine:
|
|
image: ubuntu-2004:202111-02
|
|
resource_class: 2xlarge
|
|
# find test list by `make list_all_tests`
|
|
parameters:
|
|
start_test:
|
|
default: ""
|
|
type: string
|
|
end_test:
|
|
default: ""
|
|
type: string
|
|
steps:
|
|
- pre-steps
|
|
- install-gflags
|
|
- install-clang-10
|
|
- install-gtest-parallel
|
|
- run:
|
|
name: "Build unit tests"
|
|
command: |
|
|
echo "env: $(env)"
|
|
ROCKSDBTESTS_START=<<parameters.start_test>> ROCKSDBTESTS_END=<<parameters.end_test>> ROCKSDBTESTS_SUBSET_TESTS_TO_FILE=/tmp/test_list COMPILE_WITH_TSAN=1 CC=clang-10 CXX=clang++-10 ROCKSDB_DISABLE_ALIGNED_NEW=1 USE_CLANG=1 make V=1 -j32 --output-sync=target build_subset_tests
|
|
- run:
|
|
name: "Run unit tests in parallel"
|
|
command: |
|
|
sed -i 's/[[:space:]]*$//; s/ / \.\//g; s/.*/.\/&/' /tmp/test_list
|
|
cat /tmp/test_list
|
|
gtest-parallel $(</tmp/test_list) --output_dir=/tmp | cat # pipe to cat to continuously output status on circleci UI. Otherwise, no status will be printed while the job is running.
|
|
- post-steps
|
|
|
|
build-linux-clang10-ubsan:
|
|
machine:
|
|
image: ubuntu-2004:202111-02
|
|
resource_class: 2xlarge
|
|
steps:
|
|
- pre-steps
|
|
- install-gflags
|
|
- install-clang-10
|
|
- run: COMPILE_WITH_UBSAN=1 OPT="-fsanitize-blacklist=.circleci/ubsan_suppression_list.txt" CC=clang-10 CXX=clang++-10 ROCKSDB_DISABLE_ALIGNED_NEW=1 USE_CLANG=1 make V=1 -j32 ubsan_check # aligned new doesn't work for reason we haven't figured out
|
|
- post-steps
|
|
|
|
build-linux-valgrind:
|
|
machine:
|
|
image: ubuntu-2004:202111-02
|
|
resource_class: 2xlarge
|
|
steps:
|
|
- pre-steps
|
|
- install-gflags
|
|
- install-valgrind
|
|
- run: PORTABLE=1 make V=1 -j32 valgrind_test
|
|
- post-steps
|
|
|
|
build-linux-clang10-clang-analyze:
|
|
machine:
|
|
image: ubuntu-2004:202111-02
|
|
resource_class: 2xlarge
|
|
steps:
|
|
- pre-steps
|
|
- install-gflags
|
|
- install-clang-10
|
|
- run: sudo apt-get update -y && sudo apt-get install -y clang-tools-10
|
|
- run: CC=clang-10 CXX=clang++-10 ROCKSDB_DISABLE_ALIGNED_NEW=1 CLANG_ANALYZER="/usr/bin/clang++-10" CLANG_SCAN_BUILD=scan-build-10 USE_CLANG=1 make V=1 -j32 analyze # aligned new doesn't work for reason we haven't figured out. For unknown, reason passing "clang++-10" as CLANG_ANALYZER doesn't work, and we need a full path.
|
|
- post-steps
|
|
|
|
build-linux-runner:
|
|
machine: true
|
|
resource_class: facebook/rocksdb-benchmark-sys1
|
|
steps:
|
|
- pre-steps
|
|
- run:
|
|
name: "Checked Linux build (Runner)"
|
|
command: make V=1 J=8 -j8 check
|
|
environment:
|
|
LD_LIBRARY_PATH: /usr/local/lib
|
|
- post-steps
|
|
|
|
build-linux-cmake-with-folly:
|
|
machine:
|
|
image: ubuntu-2004:202111-02
|
|
resource_class: 2xlarge
|
|
steps:
|
|
- pre-steps
|
|
- install-gflags
|
|
- upgrade-cmake
|
|
- run: make checkout_folly
|
|
- run: (mkdir build && cd build && cmake -DUSE_FOLLY=1 -DWITH_GFLAGS=1 .. && make V=1 -j20 && ctest -j20)
|
|
- post-steps
|
|
|
|
build-linux-cmake-with-benchmark:
|
|
machine:
|
|
image: ubuntu-2004:202111-02
|
|
resource_class: 2xlarge
|
|
steps:
|
|
- pre-steps
|
|
- install-gflags
|
|
- install-benchmark
|
|
- run: (mkdir build && cd build && cmake -DWITH_GFLAGS=1 -DWITH_BENCHMARK=1 .. && make V=1 -j20 && ctest -j20)
|
|
- post-steps
|
|
|
|
build-linux-unity-and-headers:
|
|
docker: # executor type
|
|
- image: gcc:latest
|
|
environment:
|
|
EXTRA_CXXFLAGS: -mno-avx512f # Warnings-as-error in avx512fintrin.h, would be used on newer hardware
|
|
resource_class: large
|
|
steps:
|
|
- checkout # check out the code in the project directory
|
|
- run: apt-get update -y && apt-get install -y libgflags-dev
|
|
- run: make V=1 -j8 unity_test
|
|
- run: make V=1 -j8 -k check-headers # could be moved to a different build
|
|
- post-steps
|
|
|
|
build-linux-gcc-7-with-folly:
|
|
machine:
|
|
image: ubuntu-2004:202111-02
|
|
resource_class: 2xlarge
|
|
steps:
|
|
- pre-steps
|
|
- run: sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test && sudo apt-get update -y && sudo apt-get install gcc-7 g++-7 libgflags-dev
|
|
- run: make checkout_folly
|
|
- run: USE_FOLLY=1 CC=gcc-7 CXX=g++-7 V=1 make -j32 check
|
|
- post-steps
|
|
|
|
build-linux-gcc-8-no_test_run:
|
|
machine:
|
|
image: ubuntu-2004:202111-02
|
|
resource_class: xlarge
|
|
steps:
|
|
- pre-steps
|
|
- run: sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test && sudo apt-get update -y && sudo apt-get install gcc-8 g++-8 libgflags-dev
|
|
- run: CC=gcc-8 CXX=g++-8 V=1 make -j16 all
|
|
- post-steps
|
|
|
|
build-linux-gcc-10-cxx20-no_test_run:
|
|
machine:
|
|
image: ubuntu-2004:202111-02
|
|
resource_class: xlarge
|
|
steps:
|
|
- pre-steps
|
|
- run: sudo apt-get update -y && sudo apt-get install gcc-10 g++-10 libgflags-dev
|
|
- run: CC=gcc-10 CXX=g++-10 V=1 ROCKSDB_CXX_STANDARD=c++20 make -j16 all
|
|
- post-steps
|
|
|
|
build-linux-gcc-11-no_test_run:
|
|
machine:
|
|
image: ubuntu-2004:202111-02
|
|
resource_class: xlarge
|
|
steps:
|
|
- pre-steps
|
|
- run: sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test && sudo apt-get update -y && sudo apt-get install gcc-11 g++-11 libgflags-dev
|
|
- install-benchmark
|
|
- run: CC=gcc-11 CXX=g++-11 V=1 make -j16 all microbench
|
|
- post-steps
|
|
|
|
build-linux-clang-13-no_test_run:
|
|
machine:
|
|
image: ubuntu-2004:202111-02
|
|
resource_class: xlarge
|
|
steps:
|
|
- pre-steps
|
|
- install-clang-13
|
|
- install-benchmark
|
|
- run: CC=clang-13 CXX=clang++-13 USE_CLANG=1 make -j16 all microbench
|
|
- post-steps
|
|
|
|
# Ensure ASAN+UBSAN with folly, and full testsuite with clang 13
|
|
build-linux-clang-13-asan-ubsan-with-folly:
|
|
machine:
|
|
image: ubuntu-2004:202111-02
|
|
resource_class: 2xlarge
|
|
steps:
|
|
- pre-steps
|
|
- install-clang-13
|
|
- install-gflags
|
|
- run: make checkout_folly
|
|
- run: CC=clang-13 CXX=clang++-13 USE_CLANG=1 USE_FOLLY=1 COMPILE_WITH_UBSAN=1 COMPILE_WITH_ASAN=1 make -j32 check
|
|
- post-steps
|
|
|
|
# This job is only to make sure the microbench tests are able to run, the benchmark result is not meaningful as the CI host is changing.
|
|
build-linux-run-microbench:
|
|
machine:
|
|
image: ubuntu-2004:202111-02
|
|
resource_class: 2xlarge
|
|
steps:
|
|
- pre-steps
|
|
- install-benchmark
|
|
- run: DEBUG_LEVEL=0 make -j32 run_microbench
|
|
- post-steps
|
|
|
|
build-linux-mini-crashtest:
|
|
machine:
|
|
image: ubuntu-2004:202111-02
|
|
resource_class: large
|
|
steps:
|
|
- pre-steps
|
|
- install-gflags
|
|
- install-compression-libs
|
|
- run: ulimit -S -n `ulimit -H -n` && make V=1 -j8 CRASH_TEST_EXT_ARGS=--duration=960 blackbox_crash_test_with_atomic_flush
|
|
- post-steps
|
|
|
|
build-windows:
|
|
executor: windows-2xlarge
|
|
parameters:
|
|
extra_cmake_opt:
|
|
default: ""
|
|
type: string
|
|
vs_year:
|
|
default: "2019"
|
|
type: string
|
|
cmake_generator:
|
|
default: "Visual Studio 16 2019"
|
|
type: string
|
|
environment:
|
|
THIRDPARTY_HOME: C:/Users/circleci/thirdparty
|
|
CMAKE_HOME: C:/Users/circleci/thirdparty/cmake-3.16.4-win64-x64
|
|
CMAKE_BIN: C:/Users/circleci/thirdparty/cmake-3.16.4-win64-x64/bin/cmake.exe
|
|
SNAPPY_HOME: C:/Users/circleci/thirdparty/snappy-1.1.7
|
|
SNAPPY_INCLUDE: C:/Users/circleci/thirdparty/snappy-1.1.7;C:/Users/circleci/thirdparty/snappy-1.1.7/build
|
|
SNAPPY_LIB_DEBUG: C:/Users/circleci/thirdparty/snappy-1.1.7/build/Debug/snappy.lib
|
|
VS_YEAR: <<parameters.vs_year>>
|
|
CMAKE_GENERATOR: <<parameters.cmake_generator>>
|
|
steps:
|
|
- checkout
|
|
- run:
|
|
name: "Setup VS"
|
|
command: |
|
|
if [[ "${VS_YEAR}" == "2019" ]]; then
|
|
echo "VS2019 already present."
|
|
elif [[ "${VS_YEAR}" == "2017" ]]; then
|
|
echo "Installing VS2017..."
|
|
powershell .circleci/vs2017_install.ps1
|
|
elif [[ "${VS_YEAR}" == "2015" ]]; then
|
|
echo "Installing VS2015..."
|
|
powershell .circleci/vs2015_install.ps1
|
|
fi
|
|
- store_artifacts:
|
|
path: \Users\circleci\AppData\Local\Temp\vslogs.zip
|
|
- run:
|
|
name: "Install thirdparty dependencies"
|
|
command: |
|
|
mkdir ${THIRDPARTY_HOME}
|
|
cd ${THIRDPARTY_HOME}
|
|
echo "Installing CMake..."
|
|
curl --fail --silent --show-error --output cmake-3.16.4-win64-x64.zip --location https://github.com/Kitware/CMake/releases/download/v3.16.4/cmake-3.16.4-win64-x64.zip
|
|
unzip -q cmake-3.16.4-win64-x64.zip
|
|
echo "Building Snappy dependency..."
|
|
curl --fail --silent --show-error --output snappy-1.1.7.zip --location https://github.com/google/snappy/archive/1.1.7.zip
|
|
unzip -q snappy-1.1.7.zip
|
|
cd snappy-1.1.7
|
|
mkdir build
|
|
cd build
|
|
${CMAKE_BIN} -G "${CMAKE_GENERATOR}" ..
|
|
msbuild.exe Snappy.sln -maxCpuCount -property:Configuration=Debug -property:Platform=x64
|
|
- run:
|
|
name: "Build RocksDB"
|
|
command: |
|
|
mkdir build
|
|
cd build
|
|
${CMAKE_BIN} -G "${CMAKE_GENERATOR}" -DCMAKE_BUILD_TYPE=Debug -DOPTDBG=1 -DPORTABLE=1 -DSNAPPY=1 -DJNI=1 << parameters.extra_cmake_opt >> ..
|
|
cd ..
|
|
echo "Building with VS version: ${CMAKE_GENERATOR}"
|
|
msbuild.exe build/rocksdb.sln -maxCpuCount -property:Configuration=Debug -property:Platform=x64
|
|
- run:
|
|
name: "Test RocksDB"
|
|
shell: powershell.exe
|
|
command: |
|
|
build_tools\run_ci_db_test.ps1 -SuiteRun db_basic_test,db_test,db_test2,db_merge_operand_test,bloom_test,c_test,coding_test,crc32c_test,dynamic_bloom_test,env_basic_test,env_test,hash_test,random_test -Concurrency 16
|
|
|
|
build-linux-java:
|
|
machine:
|
|
image: ubuntu-2004:202111-02
|
|
resource_class: large
|
|
environment:
|
|
JAVA_HOME: /usr/lib/jvm/java-1.8.0-openjdk-amd64
|
|
steps:
|
|
- pre-steps
|
|
- install-gflags
|
|
- run:
|
|
name: "Set Java Environment"
|
|
command: |
|
|
echo "JAVA_HOME=${JAVA_HOME}"
|
|
echo 'export PATH=$JAVA_HOME/bin:$PATH' >> $BASH_ENV
|
|
which java && java -version
|
|
which javac && javac -version
|
|
- run:
|
|
name: "Test RocksDBJava"
|
|
command: make V=1 J=8 -j8 jtest
|
|
- post-steps
|
|
|
|
build-linux-java-static:
|
|
machine:
|
|
image: ubuntu-2004:202111-02
|
|
resource_class: large
|
|
environment:
|
|
JAVA_HOME: /usr/lib/jvm/java-1.8.0-openjdk-amd64
|
|
steps:
|
|
- pre-steps
|
|
- install-gflags
|
|
- run:
|
|
name: "Set Java Environment"
|
|
command: |
|
|
echo "JAVA_HOME=${JAVA_HOME}"
|
|
echo 'export PATH=$JAVA_HOME/bin:$PATH' >> $BASH_ENV
|
|
which java && java -version
|
|
which javac && javac -version
|
|
- run:
|
|
name: "Build RocksDBJava Static Library"
|
|
command: make V=1 J=8 -j8 rocksdbjavastatic
|
|
- post-steps
|
|
|
|
build-macos-java:
|
|
macos:
|
|
xcode: 12.5.1
|
|
resource_class: large
|
|
environment:
|
|
JAVA_HOME: /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home
|
|
ROCKSDB_DISABLE_JEMALLOC: 1 # jemalloc causes java 8 crash
|
|
steps:
|
|
- increase-max-open-files-on-macos
|
|
- install-gflags-on-macos
|
|
- install-jdk8-on-macos
|
|
- pre-steps-macos
|
|
- run:
|
|
name: "Set Java Environment"
|
|
command: |
|
|
echo "JAVA_HOME=${JAVA_HOME}"
|
|
echo 'export PATH=$JAVA_HOME/bin:$PATH' >> $BASH_ENV
|
|
which java && java -version
|
|
which javac && javac -version
|
|
- run:
|
|
name: "Test RocksDBJava"
|
|
command: make V=1 J=16 -j16 jtest
|
|
- post-steps
|
|
|
|
build-macos-java-static:
|
|
macos:
|
|
xcode: 12.5.1
|
|
resource_class: large
|
|
environment:
|
|
JAVA_HOME: /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home
|
|
steps:
|
|
- increase-max-open-files-on-macos
|
|
- install-gflags-on-macos
|
|
- install-cmake-on-macos
|
|
- install-jdk8-on-macos
|
|
- pre-steps-macos
|
|
- run:
|
|
name: "Set Java Environment"
|
|
command: |
|
|
echo "JAVA_HOME=${JAVA_HOME}"
|
|
echo 'export PATH=$JAVA_HOME/bin:$PATH' >> $BASH_ENV
|
|
which java && java -version
|
|
which javac && javac -version
|
|
- run:
|
|
name: "Build RocksDBJava x86 and ARM Static Libraries"
|
|
command: make V=1 J=16 -j16 rocksdbjavastaticosx
|
|
- post-steps
|
|
|
|
build-macos-java-static-universal:
|
|
macos:
|
|
xcode: 12.5.1
|
|
resource_class: large
|
|
environment:
|
|
JAVA_HOME: /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home
|
|
steps:
|
|
- increase-max-open-files-on-macos
|
|
- install-gflags-on-macos
|
|
- install-cmake-on-macos
|
|
- install-jdk8-on-macos
|
|
- pre-steps-macos
|
|
- run:
|
|
name: "Set Java Environment"
|
|
command: |
|
|
echo "JAVA_HOME=${JAVA_HOME}"
|
|
echo 'export PATH=$JAVA_HOME/bin:$PATH' >> $BASH_ENV
|
|
which java && java -version
|
|
which javac && javac -version
|
|
- run:
|
|
name: "Build RocksDBJava Universal Binary Static Library"
|
|
command: make V=1 J=16 -j16 rocksdbjavastaticosx_ub
|
|
- post-steps
|
|
|
|
build-examples:
|
|
machine:
|
|
image: ubuntu-2004:202111-02
|
|
resource_class: large
|
|
steps:
|
|
- pre-steps
|
|
- install-gflags
|
|
- run:
|
|
name: "Build examples"
|
|
command: |
|
|
OPT=-DTRAVIS V=1 make -j4 static_lib && cd examples && make -j4
|
|
- post-steps
|
|
|
|
build-cmake-mingw:
|
|
machine:
|
|
image: ubuntu-2004:202111-02
|
|
resource_class: large
|
|
steps:
|
|
- pre-steps
|
|
- install-gflags
|
|
- run: sudo apt-get update -y && sudo apt-get install -y mingw-w64
|
|
- run: sudo update-alternatives --set x86_64-w64-mingw32-g++ /usr/bin/x86_64-w64-mingw32-g++-posix
|
|
- run:
|
|
name: "Build cmake-mingw"
|
|
command: |
|
|
sudo apt-get install snapd && sudo snap install cmake --beta --classic
|
|
export PATH=/snap/bin:$PATH
|
|
sudo apt-get install -y openjdk-8-jdk
|
|
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
|
|
export PATH=$JAVA_HOME/bin:$PATH
|
|
echo "JAVA_HOME=${JAVA_HOME}"
|
|
which java && java -version
|
|
which javac && javac -version
|
|
mkdir build && cd build && cmake -DJNI=1 -DWITH_GFLAGS=OFF .. -DCMAKE_C_COMPILER=x86_64-w64-mingw32-gcc -DCMAKE_CXX_COMPILER=x86_64-w64-mingw32-g++ -DCMAKE_SYSTEM_NAME=Windows && make -j4 rocksdb rocksdbjni
|
|
- post-steps
|
|
|
|
build-linux-non-shm:
|
|
machine:
|
|
image: ubuntu-2004:202111-02
|
|
resource_class: 2xlarge
|
|
environment:
|
|
TEST_TMPDIR: /tmp/rocksdb_test_tmp
|
|
steps:
|
|
- pre-steps
|
|
- install-gflags
|
|
- run: make V=1 -j32 check
|
|
- post-steps
|
|
|
|
build-linux-arm-test-full:
|
|
machine:
|
|
image: ubuntu-2004:202111-02
|
|
resource_class: arm.large
|
|
steps:
|
|
- pre-steps
|
|
- install-gflags
|
|
- run: make V=1 J=4 -j4 check
|
|
- post-steps
|
|
|
|
build-linux-arm:
|
|
machine:
|
|
image: ubuntu-2004:202111-02
|
|
resource_class: arm.large
|
|
steps:
|
|
- pre-steps
|
|
- install-gflags
|
|
- run: ROCKSDBTESTS_PLATFORM_DEPENDENT=only make V=1 J=4 -j4 all_but_some_tests check_some
|
|
- post-steps
|
|
|
|
build-linux-arm-cmake-no_test_run:
|
|
machine:
|
|
image: ubuntu-2004:202111-02
|
|
resource_class: arm.large
|
|
environment:
|
|
JAVA_HOME: /usr/lib/jvm/java-8-openjdk-arm64
|
|
steps:
|
|
- pre-steps
|
|
- install-gflags
|
|
- run:
|
|
name: "Set Java Environment"
|
|
command: |
|
|
echo "JAVA_HOME=${JAVA_HOME}"
|
|
echo 'export PATH=$JAVA_HOME/bin:$PATH' >> $BASH_ENV
|
|
which java && java -version
|
|
which javac && javac -version
|
|
- run:
|
|
name: "Build with cmake"
|
|
command: |
|
|
mkdir build
|
|
cd build
|
|
cmake -DCMAKE_BUILD_TYPE=Release -DWITH_TESTS=0 -DWITH_GFLAGS=1 -DWITH_BENCHMARK_TOOLS=0 -DWITH_TOOLS=0 -DWITH_CORE_TOOLS=1 ..
|
|
make -j4
|
|
- run:
|
|
name: "Build Java with cmake"
|
|
command: |
|
|
rm -rf build
|
|
mkdir build
|
|
cd build
|
|
cmake -DJNI=1 -DCMAKE_BUILD_TYPE=Release -DWITH_GFLAGS=1 ..
|
|
make -j4 rocksdb rocksdbjni
|
|
- post-steps
|
|
|
|
build-format-compatible:
|
|
machine:
|
|
image: ubuntu-2004:202111-02
|
|
resource_class: 2xlarge
|
|
steps:
|
|
- pre-steps
|
|
- install-gflags
|
|
- install-compression-libs
|
|
- run:
|
|
name: "test"
|
|
command: |
|
|
export TEST_TMPDIR=/dev/shm/rocksdb
|
|
rm -rf /dev/shm/rocksdb
|
|
mkdir /dev/shm/rocksdb
|
|
tools/check_format_compatible.sh
|
|
- post-steps
|
|
|
|
build-fuzzers:
|
|
machine:
|
|
image: ubuntu-2004:202111-02
|
|
resource_class: large
|
|
steps:
|
|
- pre-steps
|
|
- install-clang-13
|
|
- run: sudo apt-get update -y && sudo apt-get install -y cmake ninja-build binutils liblzma-dev libz-dev pkg-config autoconf libtool
|
|
- install-libprotobuf-mutator
|
|
- run:
|
|
name: "Build rocksdb lib"
|
|
command: CC=clang-13 CXX=clang++-13 USE_CLANG=1 make -j4 static_lib
|
|
- run:
|
|
name: "Build fuzzers"
|
|
command: cd fuzz && make sst_file_writer_fuzzer db_fuzzer db_map_fuzzer
|
|
- post-steps
|
|
|
|
benchmark-linux: #use a private Circle CI runner (resource_class) to run the job
|
|
machine: true
|
|
resource_class: facebook/rocksdb-benchmark-sys1
|
|
steps:
|
|
- build-for-benchmarks
|
|
- perform-benchmarks
|
|
- post-benchmarks
|
|
|
|
workflows:
|
|
version: 2
|
|
jobs-linux-run-tests:
|
|
jobs:
|
|
- build-linux
|
|
- build-linux-cmake-with-folly
|
|
- build-linux-gcc-7-with-folly
|
|
- build-linux-cmake-with-benchmark
|
|
- build-linux-encrypted_env-no_compression
|
|
- build-linux-lite
|
|
jobs-linux-run-tests-san:
|
|
jobs:
|
|
- build-linux-clang10-asan
|
|
- build-linux-clang10-ubsan
|
|
- build-linux-clang10-mini-tsan:
|
|
start_test: ""
|
|
end_test: "env_test"
|
|
- build-linux-clang10-mini-tsan:
|
|
start_test: "env_test"
|
|
end_test: ""
|
|
- build-linux-shared_lib-alt_namespace-status_checked
|
|
jobs-linux-no-test-run:
|
|
jobs:
|
|
- build-linux-release
|
|
- build-linux-release-rtti
|
|
- build-linux-lite-release
|
|
- build-examples
|
|
- build-fuzzers
|
|
- build-linux-clang-no_test_run
|
|
- build-linux-clang-13-no_test_run
|
|
- build-linux-gcc-8-no_test_run
|
|
- build-linux-gcc-10-cxx20-no_test_run
|
|
- build-linux-gcc-11-no_test_run
|
|
- build-linux-arm-cmake-no_test_run
|
|
jobs-linux-other-checks:
|
|
jobs:
|
|
- build-linux-clang10-clang-analyze
|
|
- build-linux-unity-and-headers
|
|
- build-linux-mini-crashtest
|
|
jobs-windows:
|
|
jobs:
|
|
- build-windows:
|
|
name: "build-windows-vs2019"
|
|
- build-windows:
|
|
name: "build-windows-vs2019-cxx20"
|
|
extra_cmake_opt: -DCMAKE_CXX_STANDARD=20
|
|
- build-windows:
|
|
name: "build-windows-vs2017"
|
|
vs_year: "2017"
|
|
cmake_generator: "Visual Studio 15 Win64"
|
|
- build-cmake-mingw
|
|
jobs-java:
|
|
jobs:
|
|
- build-linux-java
|
|
- build-linux-java-static
|
|
- build-macos-java
|
|
- build-macos-java-static
|
|
- build-macos-java-static-universal
|
|
jobs-macos:
|
|
jobs:
|
|
- build-macos
|
|
- build-macos-cmake:
|
|
run_even_tests: true
|
|
- build-macos-cmake:
|
|
run_even_tests: false
|
|
jobs-linux-arm:
|
|
jobs:
|
|
- build-linux-arm
|
|
build-fuzzers:
|
|
jobs:
|
|
- build-fuzzers
|
|
nightly:
|
|
triggers:
|
|
- schedule:
|
|
cron: "0 9 * * *"
|
|
filters:
|
|
branches:
|
|
only:
|
|
- main
|
|
jobs:
|
|
- build-format-compatible
|
|
- build-linux-arm-test-full
|
|
- build-linux-run-microbench
|
|
- build-linux-non-shm
|
|
- build-linux-clang-13-asan-ubsan-with-folly
|
|
- build-linux-valgrind
|
|
|