version : 2.1
orbs :
win : circleci/windows@2.4.0
executors :
windows-2xlarge :
machine :
image : 'windows-server-2019-vs2019:201908-06'
resource_class : windows.2xlarge
shell : bash.exe
jobs :
build-linux :
machine :
image : ubuntu-1604:201903-01
resource_class : 2xlarge
steps :
- checkout # check out the code in the project directory
- run : pyenv global 3.5.2
- run : sudo apt-get update -y
- run : sudo apt-get install -y libgflags-dev
- run : gcc -v
- run : SKIP_FORMAT_BUCK_CHECKS=1 PRINT_PARALLEL_OUTPUTS=1 make J=32 all check -j32
build-linux-release :
machine :
image : ubuntu-1604:201903-01
resource_class : 2xlarge
steps :
- checkout # check out the code in the project directory
- run : make release -j32
build-linux-lite :
machine :
image : ubuntu-1604:201903-01
resource_class : 2xlarge
steps :
- checkout # check out the code in the project directory
- run : pyenv global 3.5.2
- run : SKIP_FORMAT_BUCK_CHECKS=1 PRINT_PARALLEL_OUTPUTS=1 LITE=1 make J=32 all check -j32
build-linux-lite-release :
machine :
image : ubuntu-1604:201903-01
resource_class : large
steps :
- checkout # check out the code in the project directory
- run : make release -j32
build-linux-clang-no-test :
machine :
image : ubuntu-1604:201903-01
resource_class : 2xlarge
steps :
- checkout # check out the code in the project directory
- run : sudo apt-get update -y
- run : sudo apt-get install -y clang
- run : CC=clang CXX=clang++ USE_CLANG=1 PORTABLE=1 make all -j32
build-linux-clang10-no-test :
machine :
image : ubuntu-1604:201903-01
resource_class : 2xlarge
steps :
- checkout # check out the code in the project directory
- run : echo "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-10 main" | sudo tee -a /etc/apt/sources.list
- run : echo "deb-src http://apt.llvm.org/xenial/ llvm-toolchain-xenial-10 main" | sudo tee -a /etc/apt/sources.list
- run : sudo apt-get update -y
- run : sudo apt-get install -y clang-10
- run : CC=clang-10 CXX=clang++-10 ROCKSDB_DISABLE_ALIGNED_NEW=1 USE_CLANG=1 make all -j32 # aligned new doesn't work for reason we haven't figured out
build-linux-clang10-asan :
machine :
image : ubuntu-1604:201903-01
resource_class : 2xlarge
steps :
- checkout # check out the code in the project directory
- run : pyenv global 3.5.2
- run : echo "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-10 main" | sudo tee -a /etc/apt/sources.list
- run : echo "deb-src http://apt.llvm.org/xenial/ llvm-toolchain-xenial-10 main" | sudo tee -a /etc/apt/sources.list
- run : sudo apt-get update -y
- run : sudo apt-get install -y clang-10
- run : sudo apt-get install -y libgflags-dev
- run : SKIP_FORMAT_BUCK_CHECKS=1 COMPILE_WITH_ASAN=1 CC=clang-10 CXX=clang++-10 ROCKSDB_DISABLE_ALIGNED_NEW=1 USE_CLANG=1 PRINT_PARALLEL_OUTPUTS=1 make asan_check -j32 # aligned new doesn't work for reason we haven't figured out
build-linux-cmake :
machine :
image : ubuntu-1604:201903-01
resource_class : 2xlarge
steps :
- checkout # check out the code in the project directory
- run : mkdir build && cd build && cmake -DWITH_GFLAGS=0 .. && make -j32
build-linux-unity :
docker : # executor type
- image : gcc:latest
resource_class : xlarge
steps :
- run : gcc -v
- checkout # check out the code in the project directory
- run : TEST_TMPDIR=/dev/shm && make unity_test -j
build-windows :
executor : windows-2xlarge
parameters :
extra_cmake_opt :
default : ""
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
CMAKE_GENERATOR : Visual Studio 16 2019
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
steps :
- checkout
- 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 ..
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,env_basic_test,env_test,db_merge_operand_test -Concurrency 16
workflows :
build-linux :
jobs :
- build-linux
build-linux-lite :
jobs :
- build-linux-lite
build-linux-release :
jobs :
- build-linux-release
build-linux-lite-release :
jobs :
- build-linux-lite-release
build-linux-clang-no-test :
jobs :
- build-linux-clang-no-test
build-linux-clang10-no-test :
jobs :
- build-linux-clang10-no-test
build-linux-clang10-asan :
jobs :
- build-linux-clang10-asan
build-linux-cmake :
jobs :
- build-linux-cmake
build-linux-unity :
jobs :
- build-linux-unity
build-windows :
jobs :
- build-windows
build-windows-cxx20 :
jobs :
- build-windows :
extra_cmake_opt : -DCMAKE_CXX_STANDARD=20