-
Notifications
You must be signed in to change notification settings - Fork 39
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ci: use prebuilt librocksdb in github actions #2316
Changes from all commits
6e95aa0
ca00d6e
25abfd6
dafc311
9b093df
39eb45c
249f8b5
488a7ae
8ccb067
e608408
eafa040
98f0af6
49ee181
9a57f6f
355e344
0239693
0a73edc
8318995
97bcd47
40e8ad5
9b8e0c2
d3b6c8a
fcd3d6a
169a655
c939f44
dd18c7d
39e9c41
691afb2
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
@@ -0,0 +1,55 @@ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
--- | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# This action builds and caches librocksdb. If we find that this solution consumes too much time, we can consider | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# prebuilding librocksdb outside of the pipeline (eg. in the grovedb release process), publish as an artifact, and | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# download it in the pipeline. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
name: "librocksdb" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
description: "Build and install librocksdb" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
inputs: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
version: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
description: RocksDB version, eg. "8.10.2" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
required: false | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
default: "8.10.2" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
bucket: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
description: S3 bucket to use for caching | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
required: false | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
default: multi-runner-cache-x1xibo9c | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
force: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
description: Force rebuild | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
required: false | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
default: "false" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
runs: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
using: composite | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
steps: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# Cache librocksdb using s3 bucket | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
- name: Restore cached librocksdb from S3 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
id: librocksdb-cache | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
uses: strophy/actions-cache@opendal-update | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
with: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
bucket: ${{ inputs.bucket }} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
path: /opt/rocksdb | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
key: librocksdb/${{ inputs.version }}/${{ runner.os }}/${{ runner.arch }} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
lklimek marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
- if: ${{ steps.librocksdb-cache.outputs.cache-hit != 'true' || inputs.force == 'true' }} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
shell: bash | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
name: Build librocksdb | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
run: | | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
set -ex | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
WORKDIR=/tmp/rocksdb-build | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
mkdir -p ${WORKDIR}/rocksdb | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
mkdir -p /opt/rocksdb/usr/local/lib/ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
pushd ${WORKDIR}/rocksdb | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# building rocksdb | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
git clone https://github.com/facebook/rocksdb.git -b v${{ inputs.version }} --depth 1 . | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
make -j$(nproc) static_lib | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
make DESTDIR=/opt/rocksdb install-static | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
set +x | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+36
to
+47
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🛠️ Refactor suggestion Add cleanup and basic error handling to the build process. The build process should clean up temporary files and include basic error handling: run: |
set -ex
WORKDIR=/tmp/rocksdb-build
+ trap 'rm -rf ${WORKDIR}' EXIT ERR
mkdir -p ${WORKDIR}/rocksdb
mkdir -p /opt/rocksdb/usr/local/lib/
pushd ${WORKDIR}/rocksdb
# building rocksdb
git clone https://github.com/facebook/rocksdb.git -b v${{ inputs.version }} --depth 1 .
make -j$(nproc) static_lib
make DESTDIR=/opt/rocksdb install-static
+
+ # Verify build success
+ if [[ ! -f /opt/rocksdb/usr/local/lib/librocksdb.a ]]; then
+ echo "Error: Static library not found after build"
+ exit 1
+ fi
set +x 📝 Committable suggestion
Suggested change
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
echo Done. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
echo Configuration: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
echo | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
echo "ROCKSDB_STATIC='/opt/rocksdb/usr/local/lib/librocksdb.a'" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
echo "ROCKSDB_LIB_DIR='/opt/rocksdb/usr/local/lib'" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
popd |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
--- | ||
name: Rebuild cached dependencies | ||
|
||
on: | ||
workflow_dispatch: | ||
jobs: | ||
build-rust-deps: | ||
name: Prebuild and cache some Rust dependencies | ||
runs-on: ubuntu-24.04 | ||
env: | ||
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} | ||
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | ||
AWS_REGION: ${{ secrets.AWS_REGION }} | ||
|
||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: 1 | ||
- name: Precompile librocksdb | ||
uses: ./.github/actions/librocksdb | ||
with: | ||
force: true |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -7,7 +7,7 @@ on: | |
jobs: | ||
cancel-merged-or-closed-pr-runs: | ||
name: Cancel runs for merged or closed PRs | ||
runs-on: ubuntu-22.04 | ||
runs-on: ubuntu-24.04 | ||
steps: | ||
- uses: octokit/[email protected] | ||
id: get_active_workflows | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Consider pinning the forked cache action to a specific commit.
Using a fork of
actions/cache
without pinning to a specific commit hash could lead to unexpected behavior if the fork is updated. Consider either:actions/cache@v4
with S3 supportExample: