Skip to content
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

Merged
merged 28 commits into from
Nov 8, 2024
Merged
Show file tree
Hide file tree
Changes from 25 commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
6e95aa0
build(github): move all tests to free runners
lklimek Nov 6, 2024
ca00d6e
feat(github): action to install librocksdb
lklimek Nov 6, 2024
25abfd6
fix: add checkout
lklimek Nov 6, 2024
dafc311
fix: don't rebuild cache every time
lklimek Nov 6, 2024
9b093df
build(docker): Prebuild dependencies image
lklimek Nov 6, 2024
39eb45c
chore: fix docker caching job
lklimek Nov 6, 2024
249f8b5
fix(docker): rm fails
lklimek Nov 6, 2024
488a7ae
feat(github): use prebuilt rocksdb everywhere
lklimek Nov 6, 2024
8ccb067
chore: remove librocksdb from formatting step
lklimek Nov 6, 2024
e608408
build(docker): move tests to amd64
lklimek Nov 6, 2024
eafa040
build(docker): fix rocksdb build
lklimek Nov 6, 2024
98f0af6
Merge branch 'v1.6-dev' into build/optimize-memory
lklimek Nov 6, 2024
49ee181
Merge remote-tracking branch 'origin/build/optimize-memory' into buil…
lklimek Nov 6, 2024
9a57f6f
build: adjust -j flag
lklimek Nov 6, 2024
355e344
chore(github): remove docker-deps from tests.yml, we will trust layer…
lklimek Nov 6, 2024
0239693
build: add job to prebuild deps on push to master
lklimek Nov 6, 2024
0a73edc
chore: self-review
lklimek Nov 6, 2024
8318995
chore: librocksdb cached in s3 instead of gh cache
lklimek Nov 8, 2024
97bcd47
chore: rename rust-deps step
lklimek Nov 8, 2024
40e8ad5
chore: fix cache key
lklimek Nov 8, 2024
9b8e0c2
chore: remove weekly rebuild
lklimek Nov 8, 2024
d3b6c8a
Merge remote-tracking branch 'origin/v1.6-dev' into build/optimize-me…
lklimek Nov 8, 2024
fcd3d6a
chore: set aws region and secrets
lklimek Nov 8, 2024
169a655
chore: move docker changes to another pr
lklimek Nov 8, 2024
c939f44
chore: fix
lklimek Nov 8, 2024
dd18c7d
chore: rebuild cached deps
lklimek Nov 8, 2024
39e9c41
chore: switch to ubuntu 24.04
lklimek Nov 8, 2024
691afb2
chore: actions/checkout v4
lklimek Nov 8, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 52 additions & 0 deletions .github/actions/librocksdb/action.yaml
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
lklimek marked this conversation as resolved.
Show resolved Hide resolved
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 cached librocksdb from S3
id: librocksdb-cache
uses: strophy/actions-cache@opendal-update
with:
Comment on lines +25 to +28
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

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:

  1. Using the official actions/cache@v4 with S3 support
  2. Pinning the current fork to a specific commit hash

Example:

-      uses: strophy/actions-cache@opendal-update
+      uses: strophy/actions-cache@commit-hash  # Replace with actual commit hash

Committable suggestion skipped: line range outside the PR's diff.

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' }}
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
27 changes: 27 additions & 0 deletions .github/workflows/tests-rs-package.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,9 @@ jobs:
with:
components: clippy

- name: Install librocksdb
uses: ./.github/actions/librocksdb

- uses: clechasseur/rs-clippy-check@v3
with:
args: --package ${{ inputs.package }} --all-features --locked -- --no-deps
Expand All @@ -50,6 +53,8 @@ jobs:
SCCACHE_BUCKET: multi-runner-cache-x1xibo9c
SCCACHE_REGION: ${{ secrets.AWS_REGION }}
SCCACHE_S3_KEY_PREFIX: ${{ runner.os }}/sccache/${{ runner.arch }}/linux-gnu
ROCKSDB_STATIC: "/opt/rocksdb/usr/local/lib/librocksdb.a"
ROCKSDB_LIB_DIR: "/opt/rocksdb/usr/local/lib"

formatting:
name: Formatting
Expand All @@ -65,7 +70,14 @@ jobs:
components: rustfmt
cache: false

# This step doesn't need librocksdb, so we don't install it

- name: Check formatting
env:
RUSTC_WRAPPER: sccache
SCCACHE_BUCKET: multi-runner-cache-x1xibo9c
SCCACHE_REGION: ${{ secrets.AWS_REGION }}
SCCACHE_S3_KEY_PREFIX: ${{ runner.os }}/sccache/${{ runner.arch }}/linux-gnu
run: cargo fmt --check --package=${{ inputs.package }}

unused_deps:
Expand All @@ -89,6 +101,9 @@ jobs:
- name: Setup Rust
uses: ./.github/actions/rust

- name: Install librocksdb
uses: ./.github/actions/librocksdb

- name: Get crate ${{ inputs.package }} info
id: crate_info
uses: ./.github/actions/crate_info
Expand All @@ -102,6 +117,8 @@ jobs:
SCCACHE_BUCKET: multi-runner-cache-x1xibo9c
SCCACHE_REGION: ${{ secrets.AWS_REGION }}
SCCACHE_S3_KEY_PREFIX: ${{ runner.os }}/sccache/${{ runner.arch }}/linux-gnu
ROCKSDB_STATIC: "/opt/rocksdb/usr/local/lib/librocksdb.a"
ROCKSDB_LIB_DIR: "/opt/rocksdb/usr/local/lib"
with:
args: ${{ steps.crate_info.outputs.cargo_manifest_dir }}

Expand Down Expand Up @@ -184,13 +201,18 @@ jobs:
- name: Setup Rust
uses: ./.github/actions/rust

- name: Install librocksdb
uses: ./.github/actions/librocksdb

- name: Run tests
run: cargo test --package=${{ inputs.package }} --all-features --locked
env:
RUSTC_WRAPPER: sccache
SCCACHE_BUCKET: multi-runner-cache-x1xibo9c
SCCACHE_REGION: ${{ secrets.AWS_REGION }}
SCCACHE_S3_KEY_PREFIX: ${{ runner.os }}/sccache/${{ runner.arch }}/linux-gnu
ROCKSDB_STATIC: "/opt/rocksdb/usr/local/lib/librocksdb.a"
ROCKSDB_LIB_DIR: "/opt/rocksdb/usr/local/lib"

check_each_feature:
name: Check each feature
Expand All @@ -211,6 +233,9 @@ jobs:
- name: Setup Rust
uses: ./.github/actions/rust

- name: Install librocksdb
uses: ./.github/actions/librocksdb

- name: Get crate ${{ runner.arch }} info
id: crate_info
uses: ./.github/actions/crate_info
Expand All @@ -223,6 +248,8 @@ jobs:
SCCACHE_BUCKET: multi-runner-cache-x1xibo9c
SCCACHE_REGION: ${{ secrets.AWS_REGION }}
SCCACHE_S3_KEY_PREFIX: ${{ runner.os }}/sccache/${{ runner.arch }}/linux-gnu
ROCKSDB_STATIC: "/opt/rocksdb/usr/local/lib/librocksdb.a"
ROCKSDB_LIB_DIR: "/opt/rocksdb/usr/local/lib"
run: |
echo Verify all features disabled
set -ex
Expand Down
27 changes: 23 additions & 4 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,13 @@ jobs:
changes:
name: Determine changed packages
if: ${{ github.event_name == 'push' || github.event_name == 'workflow_dispatch' || github.event_name == 'schedule' || !github.event.pull_request.draft }}
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
lklimek marked this conversation as resolved.
Show resolved Hide resolved
outputs:
js-packages: ${{ steps.filter-js.outputs.changes }}
rs-packages: ${{ steps.filter-rs.outputs.changes }}
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
fetch-depth: 0

Expand All @@ -36,6 +36,22 @@ jobs:
with:
filters: .github/package-filters/rs-packages.yml

build-rust-deps:
shumkov marked this conversation as resolved.
Show resolved Hide resolved
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

build-js:
name: Build JS packages
if: ${{ github.event_name == 'push' || github.event_name == 'workflow_dispatch' || github.event_name == 'schedule' || !github.event.pull_request.draft }}
Expand Down Expand Up @@ -69,6 +85,7 @@ jobs:
name: Rust packages
needs:
- changes
- build-rust-deps
secrets: inherit
strategy:
fail-fast: false
Expand All @@ -79,9 +96,11 @@ jobs:
package: ${{ matrix.rs-package }}
# lint-runner: ${{ contains(fromJSON('["drive-abci", "drive"]'), matrix.rs-package) && '[ "self-hosted", "linux", "arm64", "ubuntu-platform" ]' || '"ubuntu-22.04"' }}
# FIXME: Clippy fails on github hosted runners, most likely due to RAM usage. Using self-hosted runners for now.
lint-runner: '[ "self-hosted", "linux", "arm64", "ubuntu-platform" ]'
# lint-runner: '[ "self-hosted", "linux", "arm64", "ubuntu-platform" ]'
lint-runner: '["ubuntu-24.04"]'
# Run drive tests on self-hosted 4x
test-runner: '[ "self-hosted", "linux", "arm64", "ubuntu-platform" ]'
# test-runner: '[ "self-hosted", "linux", "arm64", "ubuntu-platform" ]'
test-runner: '["ubuntu-24.04"]'
check-each-feature: ${{ contains(fromJSON('["dash-sdk","rs-dapi-client","dapi-grpc","dpp","drive-abci"]'), matrix.rs-package) }}

rs-crates-security:
Expand Down
Loading