This is an automated email from the ASF dual-hosted git repository.

psiace pushed a commit to branch workflow
in repository https://gitbox.apache.org/repos/asf/opendal-ofs.git

commit b04b1a6d2f87c14838eb4daae299b3268ed4918d
Author: Chojan Shang <[email protected]>
AuthorDate: Thu Nov 20 03:28:37 2025 +0800

    chore(ci): add basic workflow back
    
    Signed-off-by: Chojan Shang <[email protected]>
---
 .github/actions/setup/action.yml | 93 ++++++++++++++++++++++++++++++++++++++++
 .github/workflows/ci.yml         | 55 ++++++++++++++++++++++++
 README.md                        |  4 +-
 3 files changed, 150 insertions(+), 2 deletions(-)

diff --git a/.github/actions/setup/action.yml b/.github/actions/setup/action.yml
new file mode 100644
index 0000000..b9813e3
--- /dev/null
+++ b/.github/actions/setup/action.yml
@@ -0,0 +1,93 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+name: Setup Rust Builder
+description: "Prepare Rust Build Environment"
+inputs:
+  need-rocksdb:
+    description: "This setup needs rocksdb or not"
+  need-protoc:
+    description: "This setup needs protoc or not"
+  github-token:
+    description: "Github Token"
+    default: ""
+
+runs:
+  using: "composite"
+  steps:
+    - name: Setup rust related environment variables
+      shell: bash
+      run: |
+        # Disable full debug symbol generation to speed up CI build and keep 
memory down
+        # "1" means line tables only, which is useful for panic tracebacks.
+        # About `force-frame-pointers`, here's the discussion history: 
https://github.com/apache/opendal/issues/3756
+        echo "RUSTFLAGS=-C force-frame-pointers=yes -C debuginfo=1" >> 
$GITHUB_ENV
+        # Enable backtraces
+        echo "RUST_BACKTRACE=1" >> $GITHUB_ENV
+        # Enable logging
+        echo "RUST_LOG=opendal=trace" >> $GITHUB_ENV
+        # Enable sparse index
+        echo "CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse" >> $GITHUB_ENV
+        # Make sure rust has been setup
+        cargo version
+
+    # Make sure all required lib has been installed.
+    - name: Setup Linux
+      if: runner.os == 'Linux'
+      shell: bash
+      run: sudo apt-get install libgflags-dev libsnappy-dev zlib1g-dev 
libbz2-dev liblz4-dev libzstd-dev
+
+    - name: Setup Protoc
+      if: inputs.need-protoc == 'true'
+      uses: arduino/setup-protoc@v3
+      with:
+        version: "23.4"
+        repo-token: ${{ inputs.github-token }}
+
+    - name: Setup rocksdb on linux
+      if: runner.os == 'Linux' && inputs.need-rocksdb == 'true'
+      shell: bash
+      run: |
+        # Set rocksdb lib path
+        echo "ROCKSDB_LIB_DIR=/tmp/rocksdb/lib" >> $GITHUB_ENV
+
+    - name: Cache rocksdb
+      id: cache-rocksdb
+      uses: actions/cache@v4
+      if: runner.os == 'Linux' && inputs.need-rocksdb == 'true'
+      with:
+        path: /tmp/rocksdb
+        key: r2-rocksdb-8.1.1
+
+    - name: Build rocksdb if not cached
+      if: steps.cache-rocksdb.outputs.cache-hit != 'true' && runner.os == 
'Linux' && inputs.need-rocksdb == 'true'
+      shell: bash
+      run: |
+        set -e
+
+        cd /tmp
+        curl 
https://github.com/facebook/rocksdb/archive/refs/tags/v8.1.1.tar.gz -L -o 
rocksdb.tar.gz
+        tar -xzf rocksdb.tar.gz
+        cd rocksdb-8.1.1
+
+        mkdir /tmp/rocksdb
+        cmake -DCMAKE_INSTALL_PREFIX=/tmp/rocksdb -DPORTABLE=1
+        make -j$(nproc)
+        make install
+
+        cd ..
+        rm -rf /tmp/rocksdb-8.1.1
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644
index 0000000..c95f6dd
--- /dev/null
+++ b/.github/workflows/ci.yml
@@ -0,0 +1,55 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+name: Ofs CI
+
+on:
+  push:
+    branches:
+      - main
+  pull_request:
+    branches:
+      - main
+    paths:
+      - "src/**"
+      - ".github/workflows/ci.yml"
+
+concurrency:
+  group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event_name }}
+  cancel-in-progress: true
+
+jobs:
+  check_clippy:
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@v5
+
+      - name: Setup Rust toolchain
+        uses: ./.github/actions/setup
+        with:
+          need-rocksdb: true
+          need-protoc: true
+          github-token: ${{ secrets.GITHUB_TOKEN }}
+      - name: Run sccache-cache
+        uses: 
mozilla-actions/sccache-action@7d986dd989559c6ecdb630a3fd2557667be217ad
+      - name: Cargo clippy && test
+        env:
+          SCCACHE_GHA_ENABLED: "true"
+          RUSTC_WRAPPER: "sccache"
+        run: |
+          cargo clippy --all-targets --all-features -- -D warnings
+          cargo test --all-targets --all-features
diff --git a/README.md b/README.md
index 293e496..77bb463 100644
--- a/README.md
+++ b/README.md
@@ -2,8 +2,8 @@
 
 [![Build Status]][actions] [![Latest Version]][crates.io] [![Crate 
Downloads]][crates.io] [![chat]][discord]
 
-[build status]: 
https://img.shields.io/github/actions/workflow/status/apache/opendal/ci_bin_ofs.yml?branch=main
-[actions]: https://github.com/apache/opendal/actions?query=branch%3Amain
+[build status]: 
https://img.shields.io/github/actions/workflow/status/apache/opendal-ofs/ci.yml?branch=main
+[actions]: https://github.com/apache/opendal-ofs/actions?query=branch%3Amain
 [latest version]: https://img.shields.io/crates/v/ofs.svg
 [crates.io]: https://crates.io/crates/ofs
 [crate downloads]: https://img.shields.io/crates/d/ofs.svg

Reply via email to