Summary:
Improve the CI build speed:
- split the macos tests to 2 parallel jobs
- split tsan tests to 2 parallel jobs
- move non-shm tests to nightly build
- slow jobs use lager machine
- fast jobs use smaller machine
- add microbench to no-test jobs
- add run-microbench to nightly build
Pull Request resolved: https://github.com/facebook/rocksdb/pull/9605
Reviewed By: riversand963
Differential Revision: D34358982
Pulled By: jay-zhuang
fbshipit-source-id: d5091b3f4ef6d25c5c37920fb614f3342ee60e4a
main
Jay Zhuang3 years agocommitted byFacebook GitHub Bot
- run:USE_RTTI=1 DEBUG_LEVEL=0 make V=1 -j8 static_lib tools db_bench
- run:USE_RTTI=1 DEBUG_LEVEL=0 make V=1 -j16 static_lib tools db_bench
- run:./db_stress --version# ensure with gflags
- run:./db_stress --version# ensure with gflags
build-linux-lite:
build-linux-lite:
machine:
machine:
image:ubuntu-2004:202111-02
image:ubuntu-2004:202111-02
resource_class:2xlarge
resource_class:large
steps:
steps:
- pre-steps
- pre-steps
- install-gflags
- install-gflags
- run:LITE=1 make V=1 J=32 -j32 check
- run:LITE=1 make V=1 J=8 -j8 check
- post-steps
- post-steps
build-linux-lite-release:
build-linux-lite-release:
@ -291,11 +313,30 @@ jobs:
machine:
machine:
image:ubuntu-2004:202111-02
image:ubuntu-2004:202111-02
resource_class:2xlarge
resource_class:2xlarge
# find test list by `make list_all_tests`
parameters:
start_test:
default:""
type:string
end_test:
default:""
type:string
steps:
steps:
- pre-steps
- pre-steps
- install-gflags
- install-gflags
- install-clang-10
- install-clang-10
- run:COMPILE_WITH_TSAN=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.
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.
ROCKSDBTESTS_START=<<parameters.start_test>> ROCKSDBTESTS_END=<<parameters.end_test>> ROCKSDBTESTS_SUBSET_TESTS_TO_FILE=/tmp/test_list 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
export TEST_TMPDIR=/tmp/rocksdb_test_tmp
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
- post-steps
build-linux-arm-test-full:
build-linux-arm-test-full:
@ -788,7 +813,12 @@ workflows:
- build-linux-clang10-asan
- build-linux-clang10-asan
build-linux-clang10-mini-tsan:
build-linux-clang10-mini-tsan:
jobs:
jobs:
- build-linux-clang10-mini-tsan
- build-linux-clang10-mini-tsan:
start_test:""
end_test:"env_test"
- build-linux-clang10-mini-tsan:
start_test:"env_test"
end_test:""
build-linux-clang10-ubsan:
build-linux-clang10-ubsan:
jobs:
jobs:
- build-linux-clang10-ubsan
- build-linux-clang10-ubsan
@ -823,20 +853,6 @@ workflows:
build-examples:
build-examples:
jobs:
jobs:
- build-examples
- build-examples
build-linux-non-shm:
jobs:
- build-linux-non-shm:
start_test:""
end_test:"db_options_test"# make sure unique in src.mk
- build-linux-non-shm:
start_test:"db_options_test"# make sure unique in src.mk
end_test:"filename_test"# make sure unique in src.mk
- build-linux-non-shm:
start_test:"filename_test"# make sure unique in src.mk
end_test:"statistics_test"# make sure unique in src.mk
- build-linux-non-shm:
start_test:"statistics_test"# make sure unique in src.mk