Skip to content

Commit 6249a7d

Browse files
authored
Migrated CI from CircleCI to GitHub Actions (#3)
1 parent 3f7c92b commit 6249a7d

File tree

28 files changed

+843
-3
lines changed

28 files changed

+843
-3
lines changed
+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
name: build-folly
2+
runs:
3+
using: composite
4+
steps:
5+
- name: Build folly and dependencies
6+
run: make build_folly -j4
7+
shell: bash
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
name: build-for-benchmarks
2+
runs:
3+
using: composite
4+
steps:
5+
- uses: "./.github/actions/pre-steps"
6+
- name: Linux build for benchmarks
7+
run: make V=1 J=4 -j4 release
8+
shell: bash
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
name: increase-max-open-files-on-macos
2+
runs:
3+
using: composite
4+
steps:
5+
- name: Increase max open files
6+
run: |-
7+
sudo sysctl -w kern.maxfiles=1048576
8+
sudo sysctl -w kern.maxfilesperproc=1048576
9+
sudo launchctl limit maxfiles 1048576
10+
shell: bash
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
name: install-cmake-on-macos
2+
runs:
3+
using: composite
4+
steps:
5+
- name: Install cmake on macos
6+
run: HOMEBREW_NO_AUTO_UPDATE=1 brew install cmake
7+
shell: bash
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
name: install-gflags-on-macos
2+
runs:
3+
using: composite
4+
steps:
5+
- name: Install gflags on macos
6+
run: HOMEBREW_NO_AUTO_UPDATE=1 brew install gflags
7+
shell: bash
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
name: install-gflags
2+
runs:
3+
using: composite
4+
steps:
5+
- name: Install gflags
6+
run: sudo apt-get update -y && sudo apt-get install -y libgflags-dev
7+
shell: bash
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
name: install-jdk8-on-macos
2+
runs:
3+
using: composite
4+
steps:
5+
- name: Install JDK 8 on macos
6+
run: brew install --cask adoptopenjdk/openjdk/adoptopenjdk8
7+
shell: bash
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
name: perform-benchmarks
2+
runs:
3+
using: composite
4+
steps:
5+
- name: Test low-variance benchmarks
6+
run: "./tools/benchmark_ci.py --db_dir /tmp/rocksdb-benchmark-datadir --output_dir /tmp/benchmark-results --num_keys 20000000"
7+
env:
8+
LD_LIBRARY_PATH: "/usr/local/lib"
9+
DURATION_RO: 300
10+
DURATION_RW: 500
11+
NUM_THREADS: 1
12+
MAX_BACKGROUND_JOBS: 4
13+
CI_TESTS_ONLY: 'true'
14+
WRITE_BUFFER_SIZE_MB: 16
15+
TARGET_FILE_SIZE_BASE_MB: 16
16+
MAX_BYTES_FOR_LEVEL_BASE_MB: 64
17+
COMPRESSION_TYPE: none
18+
CACHE_INDEX_AND_FILTER_BLOCKS: 1
19+
MIN_LEVEL_TO_COMPRESS: 3
20+
CACHE_SIZE_MB: 10240
21+
MB_WRITE_PER_SEC: 2
22+
shell: bash
+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
name: post-benchmarks
2+
runs:
3+
using: composite
4+
steps:
5+
- uses: actions/upload-artifact@v3.1.1
6+
with:
7+
path: "/tmp/benchmark-results"
8+
- name: Send benchmark report to visualisation
9+
run: echo "skip this job, we don't have a visualisation yet"
10+
# run: |-
11+
# set +e
12+
# set +o pipefail
13+
# ./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_rix/_doc
14+
# true
15+
# shell: bash

.github/actions/post-steps/action.yml

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
name: post-steps
2+
runs:
3+
using: composite
4+
steps:
5+
- uses: actions/upload-artifact@v3.1.1
6+
with:
7+
path: "/tmp/test-results"
8+
- uses: actions/upload-artifact@v3.1.1
9+
with:
10+
path: LOG
11+
- name: Compress Test Logs
12+
run: tar -cvzf t.tar.gz t
13+
if: failure()
14+
shell: bash
15+
- uses: actions/upload-artifact@v3.1.1
16+
with:
17+
path: t.tar.gz
18+
- run: |-
19+
mkdir -p /tmp/core_dumps
20+
cp core.* /tmp/core_dumps
21+
if: failure()
22+
shell: bash
23+
- uses: actions/upload-artifact@v3.1.1
24+
with:
25+
path: "/tmp/core_dumps"
+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
name: pre-steps-macos
2+
runs:
3+
using: composite
4+
steps:
5+
- uses: actions/checkout@v3.5.0
6+
- name: Setup Environment Variables
7+
run: |-
8+
echo "CIRCLECI=1" >> $GITHUB_ENV
9+
echo "GTEST_THROW_ON_FAILURE=0" >> $GITHUB_ENV
10+
echo "GTEST_OUTPUT=xml:/tmp/test-results/" >> $GITHUB_ENV
11+
echo "SKIP_FORMAT_BUCK_CHECKS=1" >> $GITHUB_ENV
12+
echo "GTEST_COLOR=1" >> $GITHUB_ENV
13+
echo "CTEST_OUTPUT_ON_FAILURE=1" >> $GITHUB_ENV
14+
echo "CTEST_TEST_TIMEOUT=300" >> $GITHUB_ENV
15+
echo "ZLIB_DOWNLOAD_BASE=https://rocksdb-deps.s3.us-west-2.amazonaws.com/pkgs/zlib" >> $GITHUB_ENV
16+
echo "BZIP2_DOWNLOAD_BASE=https://rocksdb-deps.s3.us-west-2.amazonaws.com/pkgs/bzip2" >> $GITHUB_ENV
17+
echo "SNAPPY_DOWNLOAD_BASE=https://rocksdb-deps.s3.us-west-2.amazonaws.com/pkgs/snappy" >> $GITHUB_ENV
18+
echo "LZ4_DOWNLOAD_BASE=https://rocksdb-deps.s3.us-west-2.amazonaws.com/pkgs/lz4" >> $GITHUB_ENV
19+
echo "ZSTD_DOWNLOAD_BASE=https://rocksdb-deps.s3.us-west-2.amazonaws.com/pkgs/zstd" >> $GITHUB_ENV
20+
shell: bash

.github/actions/pre-steps/action.yml

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
name: pre-steps
2+
runs:
3+
using: composite
4+
steps:
5+
- name: Free Disk Space
6+
run: |-
7+
rm -rf /usr/local/lib/android
8+
rm -rf /usr/share/dotnet
9+
rm -rf /opt/ghc
10+
apt-get remove -y 'php.*'
11+
shell: bash
12+
- uses: actions/checkout@v3.5.0
13+
- name: Setup Environment Variables
14+
run: |-
15+
echo "CIRCLECI=1" >> $GITHUB_ENV
16+
echo "GTEST_THROW_ON_FAILURE=0" >> $GITHUB_ENV
17+
echo "GTEST_OUTPUT=xml:/tmp/test-results/" >> $GITHUB_ENV
18+
echo "SKIP_FORMAT_BUCK_CHECKS=1" >> $GITHUB_ENV
19+
echo "GTEST_COLOR=1" >> $GITHUB_ENV
20+
echo "CTEST_OUTPUT_ON_FAILURE=1" >> $GITHUB_ENV
21+
echo "CTEST_TEST_TIMEOUT=300" >> $GITHUB_ENV
22+
echo "ZLIB_DOWNLOAD_BASE=https://rocksdb-deps.s3.us-west-2.amazonaws.com/pkgs/zlib" >> $GITHUB_ENV
23+
echo "BZIP2_DOWNLOAD_BASE=https://rocksdb-deps.s3.us-west-2.amazonaws.com/pkgs/bzip2" >> $GITHUB_ENV
24+
echo "SNAPPY_DOWNLOAD_BASE=https://rocksdb-deps.s3.us-west-2.amazonaws.com/pkgs/snappy" >> $GITHUB_ENV
25+
echo "LZ4_DOWNLOAD_BASE=https://rocksdb-deps.s3.us-west-2.amazonaws.com/pkgs/lz4" >> $GITHUB_ENV
26+
echo "ZSTD_DOWNLOAD_BASE=https://rocksdb-deps.s3.us-west-2.amazonaws.com/pkgs/zstd" >> $GITHUB_ENV
27+
shell: bash
+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
name: setup-folly
2+
runs:
3+
using: composite
4+
steps:
5+
- name: Checkout folly sources
6+
run: make checkout_folly -j4
7+
shell: bash
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
name: windows-build-steps
2+
runs:
3+
using: composite
4+
steps:
5+
- uses: actions/checkout@v3.5.0
6+
- name: Install thirdparty dependencies
7+
run: |-
8+
mkdir $Env:THIRDPARTY_HOME
9+
cd $Env:THIRDPARTY_HOME
10+
echo "Building Snappy dependency..."
11+
curl https://github.com/google/snappy/archive/refs/tags/1.1.8.zip -O snappy-1.1.8.zip
12+
unzip -q snappy-1.1.8.zip
13+
cd snappy-1.1.8
14+
mkdir build
15+
cd build
16+
& $Env:CMAKE_BIN -G "$Env:CMAKE_GENERATOR" -j4 ..
17+
msbuild.exe Snappy.sln -maxCpuCount -property:Configuration=Debug -property:Platform=x64
18+
shell: bash
19+
- name: Build RocksDB
20+
run: |-
21+
mkdir build
22+
cd build
23+
& $Env:CMAKE_BIN -G "$Env:CMAKE_GENERATOR" -DCMAKE_BUILD_TYPE=Debug -DOPTDBG=1 -DPORTABLE=1 -DSNAPPY=1 -DJNI=1 -j4 ..
24+
cd ..
25+
echo "Building with VS version: $Env:CMAKE_GENERATOR"
26+
msbuild.exe build/rocksdb.sln -maxCpuCount -property:Configuration=Debug -property:Platform=x64
27+
shell: bash
28+
- name: Test RocksDB
29+
run: build_tools\run_ci_db_test.ps1 -SuiteRun arena_test,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 4
30+
shell: powershell.exe

.github/workflows/benchmark-linux.yml

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
name: benchmark-linux
2+
on:
3+
schedule:
4+
- cron: 0 * * * *
5+
# # 'filters' was not transformed because there is no suitable equivalent in GitHub Actions
6+
jobs:
7+
benchmark-linux:
8+
runs-on: ubuntu-latest
9+
steps:
10+
- uses: actions/checkout@v3.5.0
11+
- uses: "./.github/actions/build-for-benchmarks"
12+
- uses: "./.github/actions/perform-benchmarks"
13+
- uses: "./.github/actions/post-benchmarks"

.github/workflows/build-fuzzers.yml

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
name: build-fuzzers
2+
on: [push, pull_request]
3+
jobs:
4+
build-fuzzers:
5+
runs-on: ubuntu-latest
6+
container:
7+
image: zjay437/rocksdb:0.6
8+
steps:
9+
- uses: actions/checkout@v3.5.0
10+
- uses: "./.github/actions/pre-steps"
11+
- name: Build rocksdb lib
12+
run: CC=clang-13 CXX=clang++-13 USE_CLANG=1 make -j4 static_lib
13+
- name: Build fuzzers
14+
run: cd fuzz && make sst_file_writer_fuzzer db_fuzzer db_map_fuzzer
15+
- uses: "./.github/actions/post-steps"

.github/workflows/jobs-java.yml

+104
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
name: jobs-java
2+
on: [push, pull_request]
3+
jobs:
4+
build-linux-java:
5+
runs-on: ubuntu-latest
6+
container:
7+
image: zjay437/rocksdb:0.6
8+
steps:
9+
- uses: actions/checkout@v3.5.0
10+
- uses: "./.github/actions/pre-steps"
11+
- name: Set Java Environment
12+
run: |-
13+
echo "JAVA_HOME=${JAVA_HOME}"
14+
echo 'export PATH=$JAVA_HOME/bin:$PATH' >> $GITHUB_ENV
15+
which java && java -version
16+
which javac && javac -version
17+
- name: Test RocksDBJava
18+
run: make V=1 J=4 -j4 jtest
19+
- uses: "./.github/actions/post-steps"
20+
build-linux-java-static:
21+
runs-on: ubuntu-latest
22+
container:
23+
image: zjay437/rocksdb:0.6
24+
steps:
25+
- uses: actions/checkout@v3.5.0
26+
- uses: "./.github/actions/pre-steps"
27+
- name: Set Java Environment
28+
run: |-
29+
echo "JAVA_HOME=${JAVA_HOME}"
30+
echo 'export PATH=$JAVA_HOME/bin:$PATH' >> $GITHUB_ENV
31+
which java && java -version
32+
which javac && javac -version
33+
- name: Build RocksDBJava Static Library
34+
run: make V=1 J=4 -j4 rocksdbjavastatic
35+
- uses: "./.github/actions/post-steps"
36+
build-macos-java:
37+
runs-on: macos-11
38+
env:
39+
JAVA_HOME: "/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home"
40+
ROCKSDB_DISABLE_JEMALLOC: 1
41+
steps:
42+
- uses: actions/checkout@v3.5.0
43+
- uses: maxim-lobanov/setup-xcode@v1.5.1
44+
with:
45+
xcode-version: 12.5.1
46+
- uses: "./.github/actions/increase-max-open-files-on-macos"
47+
- uses: "./.github/actions/install-gflags-on-macos"
48+
- uses: "./.github/actions/install-jdk8-on-macos"
49+
- uses: "./.github/actions/pre-steps-macos"
50+
- name: Set Java Environment
51+
run: |-
52+
echo "JAVA_HOME=${JAVA_HOME}"
53+
echo 'export PATH=$JAVA_HOME/bin:$PATH' >> $GITHUB_ENV
54+
which java && java -version
55+
which javac && javac -version
56+
- name: Test RocksDBJava
57+
run: make V=1 J=4 -j4 jtest
58+
- uses: "./.github/actions/post-steps"
59+
build-macos-java-static:
60+
runs-on: macos-11
61+
env:
62+
JAVA_HOME: "/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home"
63+
steps:
64+
- uses: actions/checkout@v3.5.0
65+
- uses: maxim-lobanov/setup-xcode@v1.5.1
66+
with:
67+
xcode-version: 12.5.1
68+
- uses: "./.github/actions/increase-max-open-files-on-macos"
69+
- uses: "./.github/actions/install-gflags-on-macos"
70+
- uses: "./.github/actions/install-cmake-on-macos"
71+
- uses: "./.github/actions/install-jdk8-on-macos"
72+
- uses: "./.github/actions/pre-steps-macos"
73+
- name: Set Java Environment
74+
run: |-
75+
echo "JAVA_HOME=${JAVA_HOME}"
76+
echo 'export PATH=$JAVA_HOME/bin:$PATH' >> $GITHUB_ENV
77+
which java && java -version
78+
which javac && javac -version
79+
- name: Build RocksDBJava x86 and ARM Static Libraries
80+
run: make V=1 J=4 -j4 rocksdbjavastaticosx
81+
- uses: "./.github/actions/post-steps"
82+
build-macos-java-static-universal:
83+
runs-on: macos-11
84+
env:
85+
JAVA_HOME: "/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home"
86+
steps:
87+
- uses: actions/checkout@v3.5.0
88+
- uses: maxim-lobanov/setup-xcode@v1.5.1
89+
with:
90+
xcode-version: 12.5.1
91+
- uses: "./.github/actions/increase-max-open-files-on-macos"
92+
- uses: "./.github/actions/install-gflags-on-macos"
93+
- uses: "./.github/actions/install-cmake-on-macos"
94+
- uses: "./.github/actions/install-jdk8-on-macos"
95+
- uses: "./.github/actions/pre-steps-macos"
96+
- name: Set Java Environment
97+
run: |-
98+
echo "JAVA_HOME=${JAVA_HOME}"
99+
echo 'export PATH=$JAVA_HOME/bin:$PATH' >> $GITHUB_ENV
100+
which java && java -version
101+
which javac && javac -version
102+
- name: Build RocksDBJava Universal Binary Static Library
103+
run: make V=1 J=4 -j4 rocksdbjavastaticosx_ub
104+
- uses: "./.github/actions/post-steps"

.github/workflows/jobs-linux-arm.yml

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
name: jobs-linux-arm
2+
on: [push, pull_request]
3+
jobs:
4+
build-linux-arm:
5+
runs-on: ubuntu-20.04
6+
steps:
7+
- run: echo "skip this job, Github Actions free plan does not support arm64 yet"
8+
# - uses: actions/checkout@v3.5.0
9+
# - uses: "./.github/actions/pre-steps"
10+
# - uses: "./.github/actions/install-gflags"
11+
# - run: ROCKSDBTESTS_PLATFORM_DEPENDENT=only make V=1 J=4 -j4 all_but_some_tests check_some
12+
# - uses: "./.github/actions/post-steps"

0 commit comments

Comments
 (0)