fbcode/internal_repo_rocksdb/repo/table/merging_iterator.cc #721
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: facebook/rocksdb/pr-jobs | |
| on: [push, pull_request] | |
| permissions: {} | |
| env: | |
| # Set to a job name to run only that job (on any repo), or leave empty for | |
| # normal behavior (all jobs on facebook repo only). | |
| ONLY_JOB: '' | |
| jobs: | |
| config: | |
| runs-on: ubuntu-latest | |
| outputs: | |
| only_job: ${{ steps.set.outputs.only_job }} | |
| steps: | |
| - id: set | |
| run: echo "only_job=$ONLY_JOB" >> "$GITHUB_OUTPUT" | |
| # NOTE: multiple workflows would be recommended, but the current GHA UI in | |
| # PRs doesn't make it clear when there's an overall error with a workflow, | |
| # making it easy to overlook something broken. Grouping everything into one | |
| # workflow minimizes the problem because it will be suspicious if there are | |
| # no GHA results. | |
| # | |
| # The if: ${{ github.repository_owner == 'facebook' }} lines prevent the | |
| # jobs from attempting to run on repo forks, because of a few problems: | |
| # * runs-on labels are repository (owner) specific, so the job might wait | |
| # for days waiting for a runner that simply isn't available. | |
| # * Pushes to branches on forks for pull requests (the normal process) would | |
| # run the workflow jobs twice: once in the pull-from fork and once for the PR | |
| # destination repo. This is wasteful and dumb. | |
| # * It is not known how to avoid copy-pasting the line to each job, | |
| # increasing the risk of misconfiguration, especially on forks that might | |
| # want to run with this GHA setup. | |
| # | |
| # SELECTIVE JOB EXECUTION: Set the ONLY_JOB env var at the top of this file | |
| # to a job name (e.g. "build-linux-clang-tidy") to run only that job, | |
| # bypassing the repository owner check. Leave it empty for normal behavior. | |
| # | |
| # DEBUGGING WITH SSH: Temporarily add this as a job step, either before the | |
| # step of interest without the "if:" line or after the failing step with the | |
| # "if:" line. Then use ssh command printed in CI output. | |
| # - name: Setup tmate session # TEMPORARY! | |
| # if: ${{ failure() }} | |
| # uses: mxschmitt/action-tmate@v3 | |
| # with: | |
| # limit-access-to-actor: true | |
| # ======================== Fast Initial Checks ====================== # | |
| check-format-and-targets: | |
| if: needs.config.outputs.only_job == 'check-format-and-targets' || (needs.config.outputs.only_job == '' && github.repository_owner == 'facebook') | |
| needs: config | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - uses: actions/[email protected] | |
| with: | |
| fetch-depth: 0 # Need full checkout to determine merge base | |
| fetch-tags: true | |
| - uses: "./.github/actions/setup-upstream" | |
| - name: Setup Python | |
| uses: actions/setup-python@v5 | |
| - name: Install Dependencies | |
| run: python -m pip install --upgrade pip | |
| - name: Install argparse | |
| run: pip install argparse | |
| - name: Install clang-format | |
| run: | | |
| pip install https://files.pythonhosted.org/packages/fb/ac/3c04772acc0257f5730e83adb542b2603c1a62d1315010ab593a980af404/clang_format-21.1.2-py2.py3-none-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl | |
| clang-format --version | |
| - name: Download clang-format-diff.py | |
| run: wget https://rocksdb-deps.s3.us-west-2.amazonaws.com/llvm/llvm-project/release/12.x/clang/tools/clang-format/clang-format-diff.py | |
| - name: Check format | |
| run: VERBOSE_CHECK=1 make check-format | |
| - name: Compare buckify output | |
| run: make check-buck-targets | |
| - name: Simple source code checks | |
| run: make check-sources | |
| - name: Validate GitHub Actions YAML | |
| run: make check-workflow-yaml | |
| - name: Sanity check check_format_compatible.sh | |
| run: |- | |
| export TEST_TMPDIR=/dev/shm/rocksdb | |
| rm -rf /dev/shm/rocksdb | |
| mkdir /dev/shm/rocksdb | |
| git reset --hard | |
| git config --global --add safe.directory /__w/rocksdb/rocksdb | |
| SANITY_CHECK=1 LONG_TEST=1 tools/check_format_compatible.sh | |
| # ========================= Linux With Tests ======================== # | |
| build-linux: | |
| if: needs.config.outputs.only_job == 'build-linux' || (needs.config.outputs.only_job == '' && github.repository_owner == 'facebook') | |
| needs: config | |
| runs-on: | |
| labels: 16-core-ubuntu | |
| container: | |
| image: ghcr.io/facebook/rocksdb_ubuntu:22.1 | |
| options: --shm-size=16gb | |
| steps: | |
| - uses: actions/[email protected] | |
| - uses: "./.github/actions/pre-steps" | |
| - uses: "./.github/actions/setup-ccache" | |
| with: | |
| cache-key-prefix: build-linux | |
| - run: make V=1 J=32 -j32 check | |
| - uses: "./.github/actions/teardown-ccache" | |
| if: always() | |
| - uses: "./.github/actions/post-steps" | |
| build-linux-cmake-mingw: | |
| if: needs.config.outputs.only_job == 'build-linux-cmake-mingw' || (needs.config.outputs.only_job == '' && github.repository_owner == 'facebook') | |
| needs: config | |
| runs-on: | |
| labels: 4-core-ubuntu | |
| container: | |
| image: ghcr.io/facebook/rocksdb_ubuntu:24.1 | |
| options: --shm-size=16gb | |
| steps: | |
| - uses: actions/[email protected] | |
| - uses: "./.github/actions/pre-steps" | |
| - uses: "./.github/actions/setup-ccache" | |
| with: | |
| cache-key-prefix: cmake-mingw | |
| - run: update-alternatives --set x86_64-w64-mingw32-g++ /usr/bin/x86_64-w64-mingw32-g++-posix | |
| - name: Build cmake-mingw | |
| run: |- | |
| 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 | |
| - uses: "./.github/actions/teardown-ccache" | |
| if: always() | |
| - uses: "./.github/actions/post-steps" | |
| build-linux-make-with-folly: | |
| if: needs.config.outputs.only_job == 'build-linux-make-with-folly' || (needs.config.outputs.only_job == '' && github.repository_owner == 'facebook') | |
| needs: config | |
| runs-on: | |
| labels: 32-core-ubuntu | |
| container: | |
| image: ghcr.io/facebook/rocksdb_ubuntu:22.1 | |
| options: --shm-size=16gb | |
| steps: | |
| - uses: actions/[email protected] | |
| - uses: "./.github/actions/pre-steps" | |
| - uses: "./.github/actions/cache-getdeps-downloads" | |
| - uses: "./.github/actions/setup-folly" | |
| - uses: "./.github/actions/setup-ccache" | |
| with: | |
| cache-key-prefix: make-with-folly | |
| - uses: "./.github/actions/cache-folly" | |
| id: cache-folly | |
| - uses: "./.github/actions/build-folly" | |
| with: | |
| cache-hit: ${{ steps.cache-folly.outputs.cache-hit }} | |
| - run: USE_FOLLY=1 LIB_MODE=static V=1 make -j64 check | |
| - uses: "./.github/actions/teardown-ccache" | |
| if: always() | |
| - uses: "./.github/actions/post-steps" | |
| build-linux-make-with-folly-lite-no-test: | |
| if: needs.config.outputs.only_job == 'build-linux-make-with-folly-lite-no-test' || (needs.config.outputs.only_job == '' && github.repository_owner == 'facebook') | |
| needs: config | |
| runs-on: | |
| labels: 16-core-ubuntu | |
| container: | |
| image: ghcr.io/facebook/rocksdb_ubuntu:22.1 | |
| options: --shm-size=16gb | |
| steps: | |
| - uses: actions/[email protected] | |
| - uses: "./.github/actions/pre-steps" | |
| - uses: "./.github/actions/cache-getdeps-downloads" | |
| - uses: "./.github/actions/setup-folly" | |
| - uses: "./.github/actions/setup-ccache" | |
| with: | |
| cache-key-prefix: make-folly-lite | |
| - run: USE_FOLLY_LITE=1 EXTRA_CXXFLAGS=-DGLOG_USE_GLOG_EXPORT V=1 make -j32 all | |
| - uses: "./.github/actions/teardown-ccache" | |
| if: always() | |
| - uses: "./.github/actions/post-steps" | |
| build-linux-cmake-with-folly-coroutines: | |
| if: needs.config.outputs.only_job == 'build-linux-cmake-with-folly-coroutines' || (needs.config.outputs.only_job == '' && github.repository_owner == 'facebook') | |
| needs: config | |
| runs-on: | |
| labels: 32-core-ubuntu | |
| container: | |
| image: ghcr.io/facebook/rocksdb_ubuntu:22.1 | |
| options: --shm-size=16gb | |
| steps: | |
| - uses: actions/[email protected] | |
| - uses: "./.github/actions/pre-steps" | |
| - uses: "./.github/actions/cache-getdeps-downloads" | |
| - uses: "./.github/actions/setup-folly" | |
| - uses: "./.github/actions/setup-ccache" | |
| with: | |
| cache-key-prefix: cmake-folly-coroutines | |
| - uses: "./.github/actions/cache-folly" | |
| id: cache-folly | |
| - uses: "./.github/actions/build-folly" | |
| with: | |
| cache-hit: ${{ steps.cache-folly.outputs.cache-hit }} | |
| - run: "(mkdir build && cd build && cmake -DUSE_COROUTINES=1 -DWITH_GFLAGS=1 -DROCKSDB_BUILD_SHARED=0 -DPORTABLE=ON .. && make VERBOSE=1 -j64 && ctest -j64)" | |
| - uses: "./.github/actions/teardown-ccache" | |
| if: always() | |
| - uses: "./.github/actions/post-steps" | |
| build-linux-cmake-with-benchmark-no-thread-status: | |
| if: needs.config.outputs.only_job == 'build-linux-cmake-with-benchmark-no-thread-status' || (needs.config.outputs.only_job == '' && github.repository_owner == 'facebook') | |
| needs: config | |
| runs-on: | |
| labels: 16-core-ubuntu | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| shard: [0, 1, 2, 3] | |
| container: | |
| image: ghcr.io/facebook/rocksdb_ubuntu:22.1 | |
| options: --shm-size=16gb | |
| steps: | |
| - uses: actions/[email protected] | |
| - uses: "./.github/actions/pre-steps" | |
| - uses: "./.github/actions/setup-ccache" | |
| with: | |
| cache-key-prefix: cmake-benchmark | |
| - name: Build | |
| run: mkdir build && cd build && cmake -DWITH_GFLAGS=1 -DWITH_BENCHMARK=1 -DPORTABLE=ON -DCMAKE_CXX_FLAGS=-DNROCKSDB_THREAD_STATUS .. && make VERBOSE=1 -j20 | |
| - name: Test shard ${{ matrix.shard }} of 4 | |
| run: cd build && ctest -j20 -I ${{ matrix.shard }},,4 | |
| - uses: "./.github/actions/teardown-ccache" | |
| if: always() | |
| - uses: "./.github/actions/post-steps" | |
| with: | |
| artifact-prefix: "${{ github.job }}-shard${{ matrix.shard }}" | |
| build-linux-encrypted_env-no_compression: | |
| if: needs.config.outputs.only_job == 'build-linux-encrypted_env-no_compression' || (needs.config.outputs.only_job == '' && github.repository_owner == 'facebook') | |
| needs: config | |
| runs-on: | |
| labels: 16-core-ubuntu | |
| container: | |
| image: ghcr.io/facebook/rocksdb_ubuntu:22.1 | |
| options: --shm-size=16gb | |
| steps: | |
| - uses: actions/[email protected] | |
| - uses: "./.github/actions/pre-steps" | |
| - uses: "./.github/actions/setup-ccache" | |
| with: | |
| cache-key-prefix: encrypted-env-no-compression | |
| - 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 | grep -E -q 'Supported built-in compression types: kNoCompression$' # Verify no compiled in compression\n" | |
| - uses: "./.github/actions/teardown-ccache" | |
| if: always() | |
| - uses: "./.github/actions/post-steps" | |
| # ======================== Linux No Test Runs ======================= # | |
| build-linux-release: | |
| if: needs.config.outputs.only_job == 'build-linux-release' || (needs.config.outputs.only_job == '' && github.repository_owner == 'facebook') | |
| needs: config | |
| runs-on: | |
| labels: 16-core-ubuntu | |
| container: | |
| image: ghcr.io/facebook/rocksdb_ubuntu:22.1 | |
| options: --shm-size=16gb | |
| steps: | |
| - uses: actions/[email protected] | |
| - uses: "./.github/actions/setup-ccache" | |
| with: | |
| cache-key-prefix: release | |
| - run: make V=1 -j32 LIB_MODE=shared release | |
| - run: ls librocksdb.so | |
| - run: "./trace_analyzer --version" # A tool dependent on gflags that can run in release build | |
| - run: make clean | |
| - run: USE_RTTI=1 make V=1 -j32 release | |
| - run: ls librocksdb.a | |
| - run: "./trace_analyzer --version" | |
| - run: make clean | |
| - run: apt-get remove -y libgflags-dev | |
| - run: make V=1 -j32 LIB_MODE=shared release | |
| - run: ls librocksdb.so | |
| - run: if ./trace_analyzer --version; then false; else true; fi | |
| - run: make clean | |
| - run: USE_RTTI=1 make V=1 -j32 release | |
| - run: ls librocksdb.a | |
| - run: if ./trace_analyzer --version; then false; else true; fi | |
| - uses: "./.github/actions/teardown-ccache" | |
| if: always() | |
| - uses: "./.github/actions/post-steps" | |
| build-linux-clang-13-no_test_run: | |
| if: needs.config.outputs.only_job == 'build-linux-clang-13-no_test_run' || (needs.config.outputs.only_job == '' && github.repository_owner == 'facebook') | |
| needs: config | |
| runs-on: | |
| labels: 8-core-ubuntu | |
| container: | |
| image: ghcr.io/facebook/rocksdb_ubuntu:22.1 | |
| options: --shm-size=16gb | |
| steps: | |
| - uses: actions/[email protected] | |
| - uses: "./.github/actions/pre-steps" | |
| - uses: "./.github/actions/setup-ccache" | |
| with: | |
| cache-key-prefix: clang-13 | |
| # FIXME: get back to "all microbench" targets | |
| - run: CC=clang-13 CXX=clang++-13 USE_CLANG=1 EXTRA_CXXFLAGS=-stdlib=libc++ EXTRA_LDFLAGS=-stdlib=libc++ make -j32 shared_lib | |
| - run: make clean | |
| # FIXME: get back to "release" target | |
| - run: CC=clang-13 CXX=clang++-13 USE_CLANG=1 EXTRA_CXXFLAGS=-stdlib=libc++ EXTRA_LDFLAGS=-stdlib=libc++ DEBUG_LEVEL=0 make -j32 shared_lib | |
| - uses: "./.github/actions/teardown-ccache" | |
| if: always() | |
| - uses: "./.github/actions/post-steps" | |
| build-linux-clang-21-no_test_run: | |
| if: needs.config.outputs.only_job == 'build-linux-clang-21-no_test_run' || (needs.config.outputs.only_job == '' && github.repository_owner == 'facebook') | |
| needs: config | |
| runs-on: | |
| labels: 16-core-ubuntu | |
| container: | |
| image: ghcr.io/facebook/rocksdb_ubuntu:24.1 | |
| options: --shm-size=16gb | |
| steps: | |
| - uses: actions/[email protected] | |
| - uses: "./.github/actions/pre-steps" | |
| - uses: "./.github/actions/setup-ccache" | |
| with: | |
| cache-key-prefix: clang-21 | |
| - run: CC=clang-21 CXX=clang++-21 USE_CLANG=1 make -j32 all microbench | |
| - run: make clean | |
| - run: CC=clang-21 CXX=clang++-21 USE_CLANG=1 DEBUG_LEVEL=0 make -j32 release | |
| - name: Install clang-format-21 for C API gen checks | |
| run: apt-get update && apt-get install -y clang-format-21 | |
| - name: Check C API codegen (link-complete, backward-compatible, up to date) | |
| # Run the make target in STRICT mode so this core CI job HARD-FAILS rather | |
| # than silently skipping if a prerequisite (clang++, clang-format, or the | |
| # compat baseline ref) is ever missing. See `make check-c-api-gen`. | |
| run: | | |
| # The container checkout is owned by a different user, so git refuses to | |
| # operate on it ("dubious ownership") -- mark it safe for the `git fetch` | |
| # and the `git show` the compat checker runs. | |
| git config --global --add safe.directory "$GITHUB_WORKSPACE" | |
| git config --global --add safe.directory '*' | |
| git fetch --no-tags --depth=1 origin main | |
| CXX=clang++-21 make check-c-api-gen \ | |
| CHECK_C_API_GEN_STRICT=1 \ | |
| API_COMPAT_REF=FETCH_HEAD \ | |
| CLANG_FORMAT_BINARY=clang-format-21 | |
| - uses: "./.github/actions/teardown-ccache" | |
| if: always() | |
| - uses: "./.github/actions/post-steps" | |
| build-linux-gcc-14-no_test_run: | |
| if: needs.config.outputs.only_job == 'build-linux-gcc-14-no_test_run' || (needs.config.outputs.only_job == '' && github.repository_owner == 'facebook') | |
| needs: config | |
| runs-on: | |
| labels: 16-core-ubuntu | |
| container: | |
| image: ghcr.io/facebook/rocksdb_ubuntu:24.1 | |
| options: --shm-size=16gb | |
| steps: | |
| - uses: actions/[email protected] | |
| - uses: "./.github/actions/pre-steps" | |
| - uses: "./.github/actions/setup-ccache" | |
| with: | |
| cache-key-prefix: gcc-14 | |
| - run: CC=gcc-14 CXX=g++-14 V=1 make -j32 all microbench | |
| - uses: "./.github/actions/teardown-ccache" | |
| if: always() | |
| - uses: "./.github/actions/post-steps" | |
| # ======================== Linux Other Checks ======================= # | |
| build-linux-unity-and-headers: | |
| if: needs.config.outputs.only_job == 'build-linux-unity-and-headers' || (needs.config.outputs.only_job == '' && github.repository_owner == 'facebook') | |
| needs: config | |
| runs-on: | |
| labels: 4-core-ubuntu | |
| container: | |
| image: gcc:latest | |
| options: --shm-size=16gb | |
| steps: | |
| - uses: actions/[email protected] | |
| - run: apt-get update -y && apt-get install -y libgflags-dev | |
| - uses: "./.github/actions/setup-ccache" | |
| with: | |
| cache-key-prefix: unity-headers | |
| - name: Unity build | |
| run: make V=1 -j8 unity_test | |
| - run: make V=1 -j8 -k check-headers | |
| - uses: "./.github/actions/teardown-ccache" | |
| if: always() | |
| - uses: "./.github/actions/post-steps" | |
| build-linux-mini-crashtest: | |
| if: needs.config.outputs.only_job == 'build-linux-mini-crashtest' || (needs.config.outputs.only_job == '' && github.repository_owner == 'facebook') | |
| needs: config | |
| runs-on: | |
| labels: 4-core-ubuntu | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - crash_test_target: blackbox_crash_test_with_atomic_flush | |
| crash_duration: 480 | |
| - crash_test_target: blackbox_crash_test | |
| crash_duration: 240 | |
| container: | |
| image: ghcr.io/facebook/rocksdb_ubuntu:22.1 | |
| options: --shm-size=16gb --ulimit nofile=1048576:1048576 | |
| steps: | |
| - uses: actions/[email protected] | |
| - uses: "./.github/actions/pre-steps" | |
| - uses: "./.github/actions/setup-ccache" | |
| with: | |
| cache-key-prefix: mini-crashtest | |
| - run: | | |
| ulimit -S -n $(ulimit -Hn) # Raise open files soft limit to hard limit | |
| echo "Updated ulimit -Hn: $(ulimit -Hn) -Sn: $(ulimit -Sn)" | |
| make V=1 -j8 CRASH_TEST_EXT_ARGS='--duration=${{ matrix.crash_duration }} --max_key=2500000' ${{ matrix.crash_test_target }} | |
| - uses: "./.github/actions/teardown-ccache" | |
| if: always() | |
| - uses: "./.github/actions/post-steps" | |
| with: | |
| artifact-prefix: "${{ github.job }}-${{ matrix.crash_test_target }}" | |
| # ======================= Linux with Sanitizers ===================== # | |
| build-linux-clang21-asan-ubsan: | |
| if: needs.config.outputs.only_job == 'build-linux-clang21-asan-ubsan' || (needs.config.outputs.only_job == '' && github.repository_owner == 'facebook') | |
| needs: config | |
| runs-on: | |
| labels: 32-core-ubuntu | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| shard: [0, 1, 2] | |
| container: | |
| image: ghcr.io/facebook/rocksdb_ubuntu:24.1 | |
| options: --shm-size=16gb | |
| steps: | |
| - uses: actions/[email protected] | |
| - uses: "./.github/actions/pre-steps" | |
| - uses: "./.github/actions/setup-ccache" | |
| with: | |
| cache-key-prefix: clang21-asan-ubsan | |
| - run: COMPILE_WITH_ASAN=1 COMPILE_WITH_UBSAN=1 CC=clang-21 CXX=clang++-21 ROCKSDB_DISABLE_ALIGNED_NEW=1 USE_CLANG=1 make V=1 -j40 check | |
| env: | |
| CI_SHARD_INDEX: ${{ matrix.shard }} | |
| CI_TOTAL_SHARDS: 3 | |
| - uses: "./.github/actions/teardown-ccache" | |
| if: always() | |
| - uses: "./.github/actions/post-steps" | |
| with: | |
| artifact-prefix: "${{ github.job }}-shard${{ matrix.shard }}" | |
| build-linux-clang21-mini-tsan: | |
| if: needs.config.outputs.only_job == 'build-linux-clang21-mini-tsan' || (needs.config.outputs.only_job == '' && github.repository_owner == 'facebook') | |
| needs: config | |
| runs-on: | |
| labels: 32-core-ubuntu | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| shard: [0, 1, 2] | |
| container: | |
| image: ghcr.io/facebook/rocksdb_ubuntu:24.1 | |
| options: --shm-size=16gb | |
| steps: | |
| - uses: actions/[email protected] | |
| - uses: "./.github/actions/pre-steps" | |
| - uses: "./.github/actions/setup-ccache" | |
| with: | |
| cache-key-prefix: clang21-tsan | |
| - run: COMPILE_WITH_TSAN=1 CC=clang-21 CXX=clang++-21 ROCKSDB_DISABLE_ALIGNED_NEW=1 USE_CLANG=1 make V=1 -j32 check | |
| env: | |
| CI_SHARD_INDEX: ${{ matrix.shard }} | |
| CI_TOTAL_SHARDS: 3 | |
| - uses: "./.github/actions/teardown-ccache" | |
| if: always() | |
| - uses: "./.github/actions/post-steps" | |
| with: | |
| artifact-prefix: "${{ github.job }}-shard${{ matrix.shard }}" | |
| build-linux-static_lib-alt_namespace-status_checked: | |
| if: needs.config.outputs.only_job == 'build-linux-static_lib-alt_namespace-status_checked' || (needs.config.outputs.only_job == '' && github.repository_owner == 'facebook') | |
| needs: config | |
| runs-on: | |
| labels: 16-core-ubuntu | |
| container: | |
| image: ghcr.io/facebook/rocksdb_ubuntu:22.1 | |
| options: --shm-size=16gb | |
| steps: | |
| - uses: actions/[email protected] | |
| - uses: "./.github/actions/pre-steps" | |
| - uses: "./.github/actions/setup-ccache" | |
| with: | |
| cache-key-prefix: static-alt-namespace | |
| - run: ASSERT_STATUS_CHECKED=1 TEST_UINT128_COMPAT=1 ROCKSDB_MODIFY_NPHASH=1 LIB_MODE=static OPT="-DROCKSDB_USE_STD_SEMAPHORES -DROCKSDB_NAMESPACE=alternative_rocksdb_ns" make V=1 -j24 check | |
| - uses: "./.github/actions/teardown-ccache" | |
| if: always() | |
| - uses: "./.github/actions/post-steps" | |
| # ========================= MacOS build only ======================== # | |
| build-macos: | |
| if: needs.config.outputs.only_job == 'build-macos' || (needs.config.outputs.only_job == '' && github.repository_owner == 'facebook') | |
| needs: config | |
| runs-on: macos-15-xlarge | |
| env: | |
| ROCKSDB_DISABLE_JEMALLOC: 1 | |
| steps: | |
| - uses: actions/[email protected] | |
| - uses: maxim-lobanov/[email protected] | |
| with: | |
| xcode-version: 16.4.0 | |
| - uses: "./.github/actions/setup-ccache" | |
| with: | |
| cache-key-prefix: macos | |
| - uses: "./.github/actions/increase-max-open-files-on-macos" | |
| - uses: "./.github/actions/install-gflags-on-macos" | |
| - uses: "./.github/actions/pre-steps-macos" | |
| - name: Build | |
| run: ulimit -S -n `ulimit -H -n` && make V=1 J=16 -j8 all | |
| - uses: "./.github/actions/teardown-ccache" | |
| if: always() | |
| - uses: "./.github/actions/post-steps" | |
| # ========================= MacOS with Tests ======================== # | |
| build-macos-cmake: | |
| if: needs.config.outputs.only_job == 'build-macos-cmake' || (needs.config.outputs.only_job == '' && github.repository_owner == 'facebook') | |
| needs: config | |
| runs-on: macos-15-xlarge | |
| strategy: | |
| matrix: | |
| run_sharded_tests: [0, 1, 2, 3] | |
| steps: | |
| - uses: actions/[email protected] | |
| - uses: maxim-lobanov/[email protected] | |
| with: | |
| xcode-version: 16.4.0 | |
| - uses: "./.github/actions/setup-ccache" | |
| with: | |
| cache-key-prefix: macos-cmake | |
| - uses: "./.github/actions/increase-max-open-files-on-macos" | |
| - uses: "./.github/actions/install-gflags-on-macos" | |
| - uses: "./.github/actions/pre-steps-macos" | |
| - name: cmake generate project file | |
| run: ulimit -S -n `ulimit -H -n` && mkdir build && cd build && cmake -DWITH_GFLAGS=1 .. | |
| - name: Build tests | |
| run: cd build && make VERBOSE=1 -j8 | |
| - name: Run shard 0 out of 4 test shards | |
| run: ulimit -S -n `ulimit -H -n` && cd build && ctest -j8 -I 0,,4 | |
| if: ${{ matrix.run_sharded_tests == 0 }} | |
| - name: Run shard 1 out of 4 test shards | |
| run: ulimit -S -n `ulimit -H -n` && cd build && ctest -j8 -I 1,,4 | |
| if: ${{ matrix.run_sharded_tests == 1 }} | |
| - name: Run shard 2 out of 4 test shards | |
| run: ulimit -S -n `ulimit -H -n` && cd build && ctest -j8 -I 2,,4 | |
| if: ${{ matrix.run_sharded_tests == 2 }} | |
| - name: Run shard 3 out of 4 test shards | |
| run: ulimit -S -n `ulimit -H -n` && cd build && ctest -j8 -I 3,,4 | |
| if: ${{ matrix.run_sharded_tests == 3 }} | |
| - uses: "./.github/actions/teardown-ccache" | |
| if: always() | |
| - uses: "./.github/actions/post-steps" | |
| # ======================== Windows with Tests ======================= # | |
| # NOTE: some windows jobs are in "nightly" to save resources | |
| build-windows-msvc: | |
| if: needs.config.outputs.only_job == 'build-windows-msvc' || (needs.config.outputs.only_job == '' && github.repository_owner == 'facebook') | |
| needs: config | |
| runs-on: windows-8-core | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - test_shard: db_test | |
| suite_run: db_test | |
| run_java: "false" | |
| - test_shard: other | |
| suite_run: arena_test,db_basic_test,db_etc2_test,db_merge_operand_test,bloom_test,c_test,coding_test,crc32c_test,dynamic_bloom_test,env_basic_test,env_test,hash_test,random_test | |
| run_java: "false" | |
| - test_shard: java | |
| suite_run: "" | |
| run_java: "true" | |
| env: | |
| CMAKE_PORTABLE: 1 | |
| steps: | |
| - uses: actions/[email protected] | |
| - uses: "./.github/actions/windows-build-steps" | |
| with: | |
| suite-run: ${{ matrix.suite_run }} | |
| run-java: ${{ matrix.run_java }} | |
| # ============================ Java Jobs ============================ # | |
| build-linux-java: | |
| if: needs.config.outputs.only_job == 'build-linux-java' || (needs.config.outputs.only_job == '' && github.repository_owner == 'facebook') | |
| needs: config | |
| runs-on: | |
| labels: 4-core-ubuntu | |
| container: | |
| image: ghcr.io/facebook/rocksdb_ubuntu:22.1 | |
| options: --shm-size=16gb | |
| steps: | |
| - uses: actions/[email protected] | |
| - uses: "./.github/actions/pre-steps" | |
| - uses: "./.github/actions/setup-ccache" | |
| with: | |
| cache-key-prefix: java | |
| - name: Set Java Environment | |
| run: |- | |
| echo "JAVA_HOME=${JAVA_HOME}" | |
| which java && java -version | |
| which javac && javac -version | |
| - name: Test RocksDBJava | |
| run: make V=1 J=8 -j8 jtest | |
| - uses: "./.github/actions/teardown-ccache" | |
| if: always() | |
| build-linux-java-static: | |
| if: needs.config.outputs.only_job == 'build-linux-java-static' || (needs.config.outputs.only_job == '' && github.repository_owner == 'facebook') | |
| needs: config | |
| runs-on: | |
| labels: 4-core-ubuntu | |
| container: | |
| image: ghcr.io/facebook/rocksdb_ubuntu:22.1 | |
| options: --shm-size=16gb | |
| steps: | |
| - uses: actions/[email protected] | |
| - uses: "./.github/actions/pre-steps" | |
| - uses: "./.github/actions/setup-ccache" | |
| with: | |
| cache-key-prefix: java-static | |
| - name: Set Java Environment | |
| run: |- | |
| echo "JAVA_HOME=${JAVA_HOME}" | |
| which java && java -version | |
| which javac && javac -version | |
| - name: Build RocksDBJava Static Library | |
| run: make V=1 J=8 -j8 rocksdbjavastatic | |
| - uses: "./.github/actions/teardown-ccache" | |
| if: always() | |
| build-macos-java: | |
| if: needs.config.outputs.only_job == 'build-macos-java' || (needs.config.outputs.only_job == '' && github.repository_owner == 'facebook') | |
| needs: config | |
| runs-on: macos-15-xlarge | |
| env: | |
| ROCKSDB_DISABLE_JEMALLOC: 1 | |
| steps: | |
| - uses: actions/[email protected] | |
| - uses: maxim-lobanov/[email protected] | |
| with: | |
| xcode-version: 16.4.0 | |
| - uses: "./.github/actions/setup-ccache" | |
| with: | |
| cache-key-prefix: macos-java | |
| - uses: "./.github/actions/increase-max-open-files-on-macos" | |
| - uses: "./.github/actions/install-gflags-on-macos" | |
| - uses: "./.github/actions/setup-jdk-on-macos" | |
| - uses: "./.github/actions/pre-steps-macos" | |
| - name: Set Java Environment | |
| run: |- | |
| echo "JAVA_HOME=${JAVA_HOME}" | |
| which java && java -version | |
| which javac && javac -version | |
| - name: Test RocksDBJava | |
| run: make V=1 J=16 -j16 jtest | |
| - uses: "./.github/actions/teardown-ccache" | |
| if: always() | |
| - uses: "./.github/actions/post-steps" | |
| build-macos-java-static: | |
| if: needs.config.outputs.only_job == 'build-macos-java-static' || (needs.config.outputs.only_job == '' && github.repository_owner == 'facebook') | |
| needs: config | |
| runs-on: macos-15-xlarge | |
| steps: | |
| - uses: actions/[email protected] | |
| - uses: maxim-lobanov/[email protected] | |
| with: | |
| xcode-version: 16.4.0 | |
| - uses: "./.github/actions/setup-ccache" | |
| with: | |
| cache-key-prefix: macos-java-static | |
| - uses: "./.github/actions/increase-max-open-files-on-macos" | |
| - uses: "./.github/actions/install-gflags-on-macos" | |
| - uses: "./.github/actions/setup-jdk-on-macos" | |
| - uses: "./.github/actions/pre-steps-macos" | |
| - name: Set Java Environment | |
| run: |- | |
| echo "JAVA_HOME=${JAVA_HOME}" | |
| which java && java -version | |
| which javac && javac -version | |
| - name: Build RocksDBJava x86 and ARM Static Libraries | |
| run: make V=1 J=16 -j16 rocksdbjavastaticosx | |
| - uses: "./.github/actions/teardown-ccache" | |
| if: always() | |
| - uses: "./.github/actions/post-steps" | |
| build-macos-java-static-universal: | |
| if: needs.config.outputs.only_job == 'build-macos-java-static-universal' || (needs.config.outputs.only_job == '' && github.repository_owner == 'facebook') | |
| needs: config | |
| runs-on: macos-15-xlarge | |
| steps: | |
| - uses: actions/[email protected] | |
| - uses: maxim-lobanov/[email protected] | |
| with: | |
| xcode-version: 16.4.0 | |
| - uses: "./.github/actions/setup-ccache" | |
| with: | |
| cache-key-prefix: macos-java-static-universal | |
| - uses: "./.github/actions/increase-max-open-files-on-macos" | |
| - uses: "./.github/actions/install-gflags-on-macos" | |
| - uses: "./.github/actions/setup-jdk-on-macos" | |
| - uses: "./.github/actions/pre-steps-macos" | |
| - name: Set Java Environment | |
| run: |- | |
| echo "JAVA_HOME=${JAVA_HOME}" | |
| which java && java -version | |
| which javac && javac -version | |
| - name: Build RocksDBJava Universal Binary Static Library | |
| run: make V=1 J=16 -j16 rocksdbjavastaticosx_ub | |
| - uses: "./.github/actions/teardown-ccache" | |
| if: always() | |
| - uses: "./.github/actions/post-steps" | |
| build-linux-java-pmd: | |
| if: needs.config.outputs.only_job == 'build-linux-java-pmd' || (needs.config.outputs.only_job == '' && github.repository_owner == 'facebook') | |
| needs: config | |
| runs-on: | |
| labels: 4-core-ubuntu | |
| container: | |
| image: evolvedbinary/rocksjava:alpine3_x64-be | |
| options: --shm-size=16gb | |
| steps: | |
| - uses: actions/[email protected] | |
| - uses: "./.github/actions/install-maven" | |
| - uses: "./.github/actions/pre-steps" | |
| - name: Set Java Environment | |
| run: |- | |
| echo "JAVA_HOME=${JAVA_HOME}" | |
| which java && java -version | |
| which javac && javac -version | |
| - name: PMD RocksDBJava | |
| run: make V=1 J=8 -j8 jpmd | |
| - uses: actions/[email protected] | |
| with: | |
| name: pmd-report | |
| path: "${{ github.workspace }}/java/target/pmd.xml" | |
| - uses: actions/[email protected] | |
| with: | |
| name: maven-site | |
| path: "${{ github.workspace }}/java/target/site" | |
| build-linux-arm: | |
| if: needs.config.outputs.only_job == 'build-linux-arm' || (needs.config.outputs.only_job == '' && github.repository_owner == 'facebook') | |
| needs: config | |
| runs-on: | |
| labels: 4-core-ubuntu-arm | |
| steps: | |
| - uses: actions/[email protected] | |
| - uses: "./.github/actions/pre-steps" | |
| - run: sudo apt-get update && sudo apt-get install -y build-essential ccache | |
| - uses: "./.github/actions/setup-ccache" | |
| with: | |
| cache-key-prefix: arm | |
| - run: ROCKSDBTESTS_PLATFORM_DEPENDENT=only make V=1 J=4 -j4 all_but_some_tests check_some | |
| - name: Print ccache stats | |
| run: ccache -s | |
| if: always() | |
| shell: bash | |
| - uses: "./.github/actions/post-steps" |