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

PsiACE pushed a commit to branch ci/cleanup-workflows
in repository https://gitbox.apache.org/repos/asf/opendal-ofs.git

commit a59be92deef29be74510f226b446f34581848d6f
Author: Chojan Shang <[email protected]>
AuthorDate: Mon Jun 1 17:35:01 2026 +0800

    ci: clean up workflow setup
---
 .github/actions/setup/action.yml |  43 +--------------
 .github/workflows/ci.yml         |   7 ---
 .github/workflows/release.yml    | 113 +++++++++++++++++++++++++++++++++++++++
 3 files changed, 114 insertions(+), 49 deletions(-)

diff --git a/.github/actions/setup/action.yml b/.github/actions/setup/action.yml
index b9813e3..d9fed04 100644
--- a/.github/actions/setup/action.yml
+++ b/.github/actions/setup/action.yml
@@ -18,10 +18,9 @@
 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"
+    default: "false"
   github-token:
     description: "Github Token"
     default: ""
@@ -45,49 +44,9 @@ runs:
         # 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
index 3e03a0c..937b223 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -24,9 +24,6 @@ on:
   pull_request:
     branches:
       - main
-    paths:
-      - "src/**"
-      - ".github/workflows/ci.yml"
 
 concurrency:
   group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event_name }}
@@ -40,10 +37,6 @@ jobs:
 
       - 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
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
new file mode 100644
index 0000000..cdcd3ce
--- /dev/null
+++ b/.github/workflows/release.yml
@@ -0,0 +1,113 @@
+# 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 Release
+
+on:
+  push:
+    tags:
+      - "v*"
+  workflow_dispatch:
+
+permissions:
+  contents: write
+
+env:
+  CARGO_TERM_COLOR: always
+  BIN_NAME: ofs
+
+jobs:
+  build:
+    name: Build ${{ matrix.target }}
+    runs-on: ${{ matrix.os }}
+    defaults:
+      run:
+        shell: bash
+    strategy:
+      fail-fast: false
+      matrix:
+        include:
+          - os: ubuntu-latest
+            target: x86_64-unknown-linux-gnu
+            use-cross: false
+          - os: ubuntu-latest
+            target: aarch64-unknown-linux-gnu
+            use-cross: true
+    steps:
+      - uses: actions/checkout@v5
+
+      - name: Setup Rust builder
+        uses: ./.github/actions/setup
+
+      - name: Build target
+        uses: ClementTsang/[email protected]
+        with:
+          use-cross: ${{ !!matrix.use-cross }}
+          command: build
+          args: --locked --release --target ${{ matrix.target }}
+        env:
+          CARGO_PROFILE_RELEASE_LTO: true
+
+      - name: Package artifact (Unix)
+        if: runner.os != 'Windows'
+        env:
+          TARGET: ${{ matrix.target }}
+        run: |
+          set -euo pipefail
+          ARCHIVE_NAME="ofs-${GITHUB_REF_NAME}-${TARGET}"
+          PACKAGE_DIR="${ARCHIVE_NAME}"
+          mkdir -p "${PACKAGE_DIR}"
+          cp "target/${TARGET}/release/${BIN_NAME}" "${PACKAGE_DIR}/"
+          cp LICENSE NOTICE "${PACKAGE_DIR}/"
+          mkdir -p dist
+          tar -czf "dist/${ARCHIVE_NAME}.tar.gz" -C "${PACKAGE_DIR}" .
+          rm -rf "${PACKAGE_DIR}"
+
+      - name: Upload artifact
+        uses: actions/upload-artifact@v5
+        with:
+          name: ofs-${{ github.ref_name }}-${{ matrix.target }}
+          path: dist/ofs-*
+          if-no-files-found: error
+
+  release:
+    name: Publish release
+    needs: build
+    if: startsWith(github.ref, 'refs/tags/')
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@v5
+
+      - name: Download all artifacts
+        uses: actions/download-artifact@v7
+        with:
+          path: dist
+          merge-multiple: true
+
+      - name: Publish GitHub release
+        uses: softprops/action-gh-release@v2
+        with:
+          files: |
+            dist/*.tar.gz
+          name: ${{ github.ref_name }}
+          tag_name: ${{ github.ref_name }}
+          generate_release_notes: true
+
+      - name: Publish to crates.io
+        run: cargo publish --locked --no-verify
+        env:
+          CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}

Reply via email to