-
Notifications
You must be signed in to change notification settings - Fork 44
ci: use prebuilt librocksdb in github actions #2316
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
Changes from 23 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,52 @@ | ||
| --- | ||
| name: "librocksdb" | ||
| description: "Build and install librocksdb" | ||
| inputs: | ||
| runs-on: | ||
| description: Target platform | ||
| required: false | ||
| default: linux-24.04 | ||
| 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 | ||
|
|
||
| runs: | ||
| using: composite | ||
| steps: | ||
| # Cache librocksdb using s3 bucket | ||
| - name: Restore local network data | ||
|
||
| id: librocksdb-cache | ||
| uses: strophy/actions-cache@opendal-update | ||
| with: | ||
| bucket: ${{ inputs.bucket }} | ||
| path: /opt/rocksdb | ||
| key: librocksdb/${{ inputs.version }}/${{ runner.os }}/${{ runner.arch }} | ||
|
|
||
| - if: ${{ steps.librocksdb-cache.outputs.cache-hit != '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 | ||
| [[ -d .git ]] || 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 | ||
lklimek marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| 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 |
|---|---|---|
|
|
@@ -17,7 +17,8 @@ on: | |
| jobs: | ||
| build-image: | ||
| name: Build ${{ inputs.name }} image | ||
| runs-on: ["self-hosted", "linux", "arm64", "ubuntu-platform"] | ||
| # runs-on: ["self-hosted", "linux", "arm64", "ubuntu-platform"] | ||
|
||
| runs-on: ubuntu-24.04 | ||
| steps: | ||
| - name: Check out repo | ||
| uses: actions/checkout@v4 | ||
|
|
@@ -41,7 +42,7 @@ jobs: | |
| image_name: ${{ inputs.image_name }} | ||
| image_org: ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.${{ secrets.AWS_REGION }}.amazonaws.com | ||
| target: ${{ inputs.target }} | ||
| platform: linux/arm64 | ||
| platform: linux/amd64 | ||
| push_tags: true | ||
| dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} | ||
| dockerhub_token: ${{ secrets.DOCKERHUB_TOKEN }} | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -146,6 +146,20 @@ ARG AWS_ACCESS_KEY_ID | |
| ARG AWS_SECRET_ACCESS_KEY | ||
|
|
||
| # | ||
| # BUILD ROCKSDB STATIC LIBRARY | ||
| # | ||
| FROM deps-${RUSTC_WRAPPER:-base} AS rocksdb | ||
|
|
||
| RUN mkdir -p /tmp/rocksdb | ||
| WORKDIR /tmp/rocksdb | ||
| RUN git clone https://github.com/facebook/rocksdb.git -b v8.10.2 --depth 1 . && \ | ||
| make -j$(nproc) static_lib && \ | ||
| mkdir -p /opt/rocksdb/usr/local/lib && \ | ||
| cp librocksdb.a /opt/rocksdb/usr/local/lib/ && \ | ||
| cp -r include /opt/rocksdb/usr/local/lib/ && \ | ||
| cd / && \ | ||
| rm -rf /tmp/rocksdb | ||
|
|
||
| # DEPS: FULL DEPENDENCIES LIST | ||
| # | ||
| # This is separate from `deps` to use sccache for caching | ||
|
|
@@ -154,6 +168,14 @@ FROM deps-${RUSTC_WRAPPER:-base} AS deps | |
| ARG SCCACHE_S3_KEY_PREFIX | ||
| ENV SCCACHE_S3_KEY_PREFIX=${SCCACHE_S3_KEY_PREFIX}/${TARGETARCH}/linux-musl | ||
|
|
||
| # Install prebuilt rocksdb library | ||
|
|
||
| COPY --from=rocksdb /opt/rocksdb /opt/rocksdb | ||
| # Set env variables so that Rust's rocksdb-sys will not build rocksdb from scratch | ||
|
|
||
| ENV ROCKSDB_STATIC=/opt/rocksdb/usr/local/lib/librocksdb.a | ||
| ENV ROCKSDB_LIB_DIR=/opt/rocksdb/usr/local/lib | ||
|
|
||
| WORKDIR /platform | ||
|
|
||
| # Install wasm-bindgen-cli in the same profile as other components, to sacrifice some performance & disk space to gain | ||
|
|
@@ -171,12 +193,17 @@ RUN --mount=type=cache,sharing=shared,id=cargo_registry_index,target=${CARGO_HOM | |
| # Meanwhile if you want to update wasm-bindgen you also need to update version in: | ||
| # - packages/wasm-dpp/Cargo.toml | ||
| # - packages/wasm-dpp/scripts/build-wasm.sh | ||
| cargo install --profile "$CARGO_BUILD_PROFILE" [email protected] [email protected] --locked | ||
| cargo install --profile "$CARGO_BUILD_PROFILE" [email protected] [email protected] --locked | ||
|
|
||
|
|
||
| # | ||
| # Rust build planner to speed up builds | ||
| # | ||
| FROM deps AS build-planner | ||
|
|
||
| ENV ROCKSDB_STATIC=/opt/rocksdb/usr/local/lib/librocksdb.a | ||
| ENV ROCKSDB_LIB_DIR=/opt/rocksdb/usr/local/lib | ||
|
|
||
| WORKDIR /platform | ||
| COPY . . | ||
| RUN source $HOME/.cargo/env && \ | ||
|
|
@@ -196,6 +223,9 @@ SHELL ["/bin/bash", "-o", "pipefail","-e", "-x", "-c"] | |
| ARG SCCACHE_S3_KEY_PREFIX | ||
| ENV SCCACHE_S3_KEY_PREFIX=${SCCACHE_S3_KEY_PREFIX}/${TARGETARCH}/linux-musl | ||
|
|
||
| ENV ROCKSDB_STATIC=/opt/rocksdb/usr/local/lib/librocksdb.a | ||
| ENV ROCKSDB_LIB_DIR=/opt/rocksdb/usr/local/lib | ||
|
|
||
| WORKDIR /platform | ||
|
|
||
| COPY --from=build-planner /platform/recipe.json recipe.json | ||
|
|
@@ -251,6 +281,9 @@ FROM deps AS build-js | |
| ARG SCCACHE_S3_KEY_PREFIX | ||
| ENV SCCACHE_S3_KEY_PREFIX=${SCCACHE_S3_KEY_PREFIX}/wasm/wasm32 | ||
|
|
||
| ENV ROCKSDB_STATIC=/opt/rocksdb/usr/local/lib/librocksdb.a | ||
| ENV ROCKSDB_LIB_DIR=/opt/rocksdb/usr/local/lib | ||
|
|
||
| WORKDIR /platform | ||
|
|
||
| COPY --from=build-planner /platform/recipe.json recipe.json | ||
|
|
||
Uh oh!
There was an error while loading. Please reload this page.