You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@opendal.apache.org by xu...@apache.org on 2025/12/12 12:01:58 UTC

(opendal) branch xuanwo/replace-setup-protoc created (now 4cca7e516)

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

xuanwo pushed a change to branch xuanwo/replace-setup-protoc
in repository https://gitbox.apache.org/repos/asf/opendal.git


      at 4cca7e516 ci: Remove setup-protoc entirely

This branch includes the following new commits:

     new 4cca7e516 ci: Remove setup-protoc entirely

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



(opendal) 01/01: ci: Remove setup-protoc entirely

Posted by xu...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

xuanwo pushed a commit to branch xuanwo/replace-setup-protoc
in repository https://gitbox.apache.org/repos/asf/opendal.git

commit 4cca7e516ff7a4236bab99dc56ea856ad0a6d839
Author: Xuanwo <gi...@xuanwo.io>
AuthorDate: Fri Dec 12 20:01:37 2025 +0800

    ci: Remove setup-protoc entirely
    
    Signed-off-by: Xuanwo <gi...@xuanwo.io>
---
 .github/actions/setup/action.yaml  | 81 +++++++++++++++++++++++++++++++++++---
 .github/workflows/release_java.yml |  8 ++--
 2 files changed, 80 insertions(+), 9 deletions(-)

diff --git a/.github/actions/setup/action.yaml b/.github/actions/setup/action.yaml
index 2ee2c2d16..0f64ef29e 100644
--- a/.github/actions/setup/action.yaml
+++ b/.github/actions/setup/action.yaml
@@ -16,7 +16,7 @@
 # under the License.
 
 name: Setup Rust Builder
-description: 'Prepare Rust Build Environment'
+description: "Prepare Rust Build Environment"
 inputs:
   need-rocksdb:
     description: "This setup needs rocksdb or not"
@@ -59,10 +59,82 @@ runs:
 
     - name: Setup Protoc
       if: inputs.need-protoc == 'true'
-      uses: arduino/setup-protoc@v3
+      shell: bash
+      run: |
+        set -euo pipefail
+
+        PROTOC_VERSION="23.4"
+        PROTOC_ROOT="${RUNNER_TEMP}/protoc/${PROTOC_VERSION}"
+
+        case "${RUNNER_OS}-${RUNNER_ARCH}" in
+          Linux-X64)
+            PROTOC_PLATFORM="linux-x86_64"
+            ;;
+          Linux-ARM64)
+            PROTOC_PLATFORM="linux-aarch_64"
+            ;;
+          macOS-X64)
+            PROTOC_PLATFORM="osx-x86_64"
+            ;;
+          macOS-ARM64)
+            PROTOC_PLATFORM="osx-aarch_64"
+            ;;
+          Windows-X64)
+            PROTOC_PLATFORM="win64"
+            ;;
+          *)
+            echo "Unsupported runner: ${RUNNER_OS}-${RUNNER_ARCH}" >&2
+            exit 1
+            ;;
+        esac
+
+        echo "PROTOC_VERSION=${PROTOC_VERSION}" >> "${GITHUB_ENV}"
+        echo "PROTOC_ROOT=${PROTOC_ROOT}" >> "${GITHUB_ENV}"
+        echo "PROTOC_PLATFORM=${PROTOC_PLATFORM}" >> "${GITHUB_ENV}"
+
+    - name: Cache Protoc
+      if: inputs.need-protoc == 'true'
+      id: cache-protoc
+      uses: actions/cache@v4
       with:
-        version: "23.4"
-        repo-token: ${{ inputs.github-token }}
+        path: ${{ runner.temp }}/protoc/${{ env.PROTOC_VERSION }}
+        key: protoc-${{ env.PROTOC_VERSION }}-${{ runner.os }}-${{ runner.arch }}
+
+    - name: Install Protoc (Unix)
+      if: inputs.need-protoc == 'true' && runner.os != 'Windows' && steps.cache-protoc.outputs.cache-hit != 'true'
+      shell: bash
+      run: |
+        set -euo pipefail
+
+        PROTOC_ZIP="protoc-${PROTOC_VERSION}-${PROTOC_PLATFORM}.zip"
+        PROTOC_URL="https://github.com/protocolbuffers/protobuf/releases/download/v${PROTOC_VERSION}/${PROTOC_ZIP}"
+
+        mkdir -p "${PROTOC_ROOT}"
+        curl -fsSL -o "${RUNNER_TEMP}/${PROTOC_ZIP}" "${PROTOC_URL}"
+        unzip -q "${RUNNER_TEMP}/${PROTOC_ZIP}" -d "${PROTOC_ROOT}"
+
+    - name: Install Protoc (Windows)
+      if: inputs.need-protoc == 'true' && runner.os == 'Windows' && steps.cache-protoc.outputs.cache-hit != 'true'
+      shell: pwsh
+      run: |
+        $ErrorActionPreference = 'Stop'
+
+        $protocZip = "protoc-$env:PROTOC_VERSION-$env:PROTOC_PLATFORM.zip"
+        $protocUrl = "https://github.com/protocolbuffers/protobuf/releases/download/v$env:PROTOC_VERSION/$protocZip"
+        $zipPath = Join-Path $env:RUNNER_TEMP $protocZip
+        $dest = $env:PROTOC_ROOT
+
+        New-Item -ItemType Directory -Force -Path $dest | Out-Null
+        Invoke-WebRequest -Uri $protocUrl -OutFile $zipPath
+        Expand-Archive -Path $zipPath -DestinationPath $dest -Force
+
+    - name: Add Protoc to PATH
+      if: inputs.need-protoc == 'true'
+      shell: bash
+      run: |
+        set -euo pipefail
+        echo "${PROTOC_ROOT}/bin" >> "${GITHUB_PATH}"
+        protoc --version
 
     - name: Install cargo-nextest
       if: inputs.need-nextest == 'true'
@@ -133,4 +205,3 @@ runs:
 
         rm foundationdb-clients_7.1.17-1_amd64.deb
         rm foundationdb-server_7.1.17-1_amd64.deb
-
diff --git a/.github/workflows/release_java.yml b/.github/workflows/release_java.yml
index e4662eccc..c530d0fcb 100644
--- a/.github/workflows/release_java.yml
+++ b/.github/workflows/release_java.yml
@@ -66,11 +66,11 @@ jobs:
       - uses: actions/setup-python@v6
         with:
           python-version: "3.11"
-      - name: Install Protoc
-        uses: arduino/setup-protoc@v3
+      - name: Setup Rust toolchain
+        uses: ./.github/actions/setup
         with:
-          version: "23.4"
-          repo-token: ${{ secrets.GITHUB_TOKEN }}
+          need-protoc: true
+          github-token: ${{ secrets.GITHUB_TOKEN }}
 
       - name: Setup linux for zigbuild
         if: ${{ contains(matrix.os, 'ubuntu') }}