diff --git a/.circleci/config.yml b/.circleci/config.yml index 8dbbc193e..04851cab3 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -11,7 +11,59 @@ executors: shell: bash.exe jobs: - build: + 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: 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: USE_CLANG=1 make all -j32 + + 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-windows: executor: windows-2xlarge environment: @@ -54,3 +106,26 @@ jobs: 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-cmake: + jobs: + - build-linux-cmake + build-windows: + jobs: + - build-windows diff --git a/Makefile b/Makefile index 874bf5993..77066fbe8 100644 --- a/Makefile +++ b/Makefile @@ -976,6 +976,12 @@ J ?= 100% # Use this regexp to select the subset of tests whose names match. tests-regexp = . +ifeq ($(PRINT_PARALLEL_OUTPUTS), 1) + parallel_com = '{}' +else + parallel_com = '{} >& t/log-{/}' +endif + .PHONY: check_0 check_0: $(AM_V_GEN)export TEST_TMPDIR=$(TMPD); \ @@ -989,7 +995,10 @@ check_0: } \ | $(prioritize_long_running_tests) \ | grep -E '$(tests-regexp)' \ - | build_tools/gnu_parallel -j$(J) --plain --joblog=LOG $$eta --gnu '{} >& t/log-{/}' + | build_tools/gnu_parallel -j$(J) --plain --joblog=LOG $$eta --gnu $(parallel_com) ; \ + parallel_retcode=$$? ; \ + awk '{ if ($$7 != 0 || $$8 != 0) { if ($$7 == "Exitval") { h = $$0; } else { if (!f) print h; print; f = 1 } } } END { if(f) exit 1; }' < LOG ; \ + if [ $$parallel_retcode -ne 0 ] ; then exit 1 ; fi valgrind-blacklist-regexp = InlineSkipTest.ConcurrentInsert|TransactionStressTest.DeadlockStress|DBCompactionTest.SuggestCompactRangeNoTwoLevel0Compactions|BackupableDBTest.RateLimiting|DBTest.CloseSpeedup|DBTest.ThreadStatusFlush|DBTest.RateLimitingTest|DBTest.EncodeDecompressedBlockSizeTest|FaultInjectionTest.UninstalledCompaction|HarnessTest.Randomized|ExternalSSTFileTest.CompactDuringAddFileRandom|ExternalSSTFileTest.IngestFileWithGlobalSeqnoRandomized|MySQLStyleTransactionTest.TransactionStressTest @@ -1048,9 +1057,11 @@ ifndef ASSERT_STATUS_CHECKED # not yet working with these tests sh tools/rocksdb_dump_test.sh endif endif -endif +endif +ifndef SKIP_FORMAT_BUCK_CHECKS $(MAKE) check-format $(MAKE) check-buck-targets +endif # TODO add ldb_tests check_some: $(SUBSET)