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

chaokunyang pushed a commit to tag v0.13.2-rc1
in repository https://gitbox.apache.org/repos/asf/fory.git

commit 35aa60b3546b9af069150aa373c2edb7ad13251b
Author: Prakash Kumar Ramesh <[email protected]>
AuthorDate: Tue Nov 4 11:36:02 2025 -0500

    chore(CI): Add caching for bazel in github workflows (#2888)
    
    <!--
    **Thanks for contributing to Apache Fory™.**
    
    **If this is your first time opening a PR on fory, you can refer to
    
[CONTRIBUTING.md](https://github.com/apache/fory/blob/main/CONTRIBUTING.md).**
    
    Contribution Checklist
    
    - The **Apache Fory™** community has requirements on the naming of pr
    titles. You can also find instructions in
    [CONTRIBUTING.md](https://github.com/apache/fory/blob/main/CONTRIBUTING.md).
    
    - Apache Fory™ has a strong focus on performance. If the PR you submit
    will have an impact on performance, please benchmark it first and
    provide the benchmark result here.
    -->
    
    ## Why?
    
    Due to lack of caching of bazel, every CI run takes too much time
    
    with cache:
    <img width="2613" height="1585" alt="image"
    
src="https://github.com/user-attachments/assets/bcc1b6f5-4512-4f92-9845-cb9df657cb74";
    />
    
    without cache:
    <img width="2282" height="564" alt="image"
    
src="https://github.com/user-attachments/assets/ec5740ff-f915-46fd-b58a-bf941576c316";
    />
    
    
    <!-- Describe the purpose of this PR. -->
    
    ## What does this PR do?
    
    This PR adds caching for bazel in github workflows
    
    <!-- Describe the details of this PR. -->
    
    ## Related issues
    
    closes #2880
    
    <!--
    Is there any related issue? If this PR closes them you say say
    fix/closes:
    
    - #xxxx0
    - #xxxx1
    - Fixes #xxxx2
    -->
---
 .github/workflows/build-containerized-release.yml |  26 +++++
 .github/workflows/build-native-pr.yml             |  29 ++++++
 .github/workflows/build-native-release.yml        |  29 ++++++
 .github/workflows/ci.yml                          | 119 +++++++++++++++++++++-
 4 files changed, 201 insertions(+), 2 deletions(-)

diff --git a/.github/workflows/build-containerized-release.yml 
b/.github/workflows/build-containerized-release.yml
index c3d1d4afc..1b0cc0770 100644
--- a/.github/workflows/build-containerized-release.yml
+++ b/.github/workflows/build-containerized-release.yml
@@ -31,6 +31,32 @@ jobs:
       - name: Bump version
         # Pass the tag name from the push (e.g. "v0.12.1b1"); deploy.sh will 
strip leading "v".
         run: ./ci/deploy.sh bump_py_version "${{ github.ref_name }}"
+      - name: Set up Python 3.8
+        uses: actions/setup-python@v5
+        with:
+          python-version: 3.8
+          cache: 'pip'
+      - name: Cache Bazel binary
+        uses: actions/cache@v4
+        with:
+          path: |
+            ~/bin/bazel
+            ~/.local/bin/bazel
+          key: bazel-binary-${{ runner.os }}-${{ runner.arch }}-${{ 
hashFiles('.bazelversion') }}
+          restore-keys: |
+            bazel-binary-${{ runner.os }}-${{ runner.arch }}-
+      - name: Cache Bazel repository cache
+        uses: actions/cache@v4
+        with:
+          path: ~/.cache/bazel/_bazel_*/*/external
+          key: bazel-repo-${{ runner.os }}-${{ runner.arch }}-py38-${{ 
hashFiles('WORKSPACE', '.bazelrc', 'bazel/**') }}
+          restore-keys: |
+            bazel-repo-${{ runner.os }}-${{ runner.arch }}-py38-
+      - name: Cache Bazel build outputs
+        uses: actions/cache@v4
+        with:
+          path: ~/.cache/bazel
+          key: bazel-build-release-${{ runner.os }}-${{ runner.arch }}-${{ 
hashFiles('cpp/**', 'python/**/*.pyx', 'python/**/*.pxd', 'BUILD', 'WORKSPACE') 
}}
       - name: Install bazel
         run: ./ci/run_ci.sh install_bazel
       - name: Build and test wheels
diff --git a/.github/workflows/build-native-pr.yml 
b/.github/workflows/build-native-pr.yml
index 9a5150235..11f5d308d 100644
--- a/.github/workflows/build-native-pr.yml
+++ b/.github/workflows/build-native-pr.yml
@@ -35,6 +35,35 @@ jobs:
       - uses: actions/setup-python@v5
         with:
           python-version: ${{ matrix.python-version }}
+          cache: 'pip'
+      - name: Cache Bazel binary
+        uses: actions/cache@v4
+        with:
+          path: |
+            ~/bin/bazel
+            ~/.local/bin/bazel
+            C:\bazel\bazel.exe
+          key: bazel-binary-${{ runner.os }}-${{ runner.arch }}-${{ 
hashFiles('.bazelversion') }}
+          restore-keys: |
+            bazel-binary-${{ runner.os }}-${{ runner.arch }}-
+      - name: Cache Bazel repository cache
+        uses: actions/cache@v4
+        with:
+          path: |
+            ~/.cache/bazel/_bazel_*/*/external
+            ~/Library/Caches/bazel/_bazel_*/*/external
+            C:\users\runneradmin\_bazel_runneradmin\*/external
+          key: bazel-repo-${{ runner.os }}-${{ runner.arch }}-${{ 
matrix.python-version }}-${{ hashFiles('WORKSPACE', '.bazelrc', 'bazel/**') }}
+          restore-keys: |
+            bazel-repo-${{ runner.os }}-${{ runner.arch }}-${{ 
matrix.python-version }}-
+      - name: Cache Bazel build outputs
+        uses: actions/cache@v4
+        with:
+          path: |
+            ~/.cache/bazel
+            ~/Library/Caches/bazel
+            C:\users\runneradmin\_bazel_runneradmin
+          key: bazel-build-${{ runner.os }}-${{ runner.arch }}-${{ 
matrix.python-version }}-${{ hashFiles('cpp/**', 'python/**/*.pyx', 
'python/**/*.pxd', 'BUILD', 'WORKSPACE') }}
       - name: Install bazel
         if: runner.os != 'Windows'
         run: ./ci/run_ci.sh install_bazel
diff --git a/.github/workflows/build-native-release.yml 
b/.github/workflows/build-native-release.yml
index 2ef8248c8..d5ba74d36 100644
--- a/.github/workflows/build-native-release.yml
+++ b/.github/workflows/build-native-release.yml
@@ -36,6 +36,35 @@ jobs:
       - uses: actions/setup-python@v5
         with:
           python-version: ${{ matrix.python-version }}
+          cache: 'pip'
+      - name: Cache Bazel binary
+        uses: actions/cache@v4
+        with:
+          path: |
+            ~/bin/bazel
+            ~/.local/bin/bazel
+            C:\bazel\bazel.exe
+          key: bazel-binary-${{ runner.os }}-${{ runner.arch }}-${{ 
hashFiles('.bazelversion') }}
+          restore-keys: |
+            bazel-binary-${{ runner.os }}-${{ runner.arch }}-
+      - name: Cache Bazel repository cache
+        uses: actions/cache@v4
+        with:
+          path: |
+            ~/.cache/bazel/_bazel_*/*/external
+            ~/Library/Caches/bazel/_bazel_*/*/external
+            C:\users\runneradmin\_bazel_runneradmin\*/external
+          key: bazel-repo-${{ runner.os }}-${{ runner.arch }}-${{ 
matrix.python-version }}-${{ hashFiles('WORKSPACE', '.bazelrc', 'bazel/**') }}
+          restore-keys: |
+            bazel-repo-${{ runner.os }}-${{ runner.arch }}-${{ 
matrix.python-version }}-
+      - name: Cache Bazel build outputs
+        uses: actions/cache@v4
+        with:
+          path: |
+            ~/.cache/bazel
+            ~/Library/Caches/bazel
+            C:\users\runneradmin\_bazel_runneradmin
+          key: bazel-build-release-native-${{ runner.os }}-${{ runner.arch 
}}-${{ matrix.python-version }}-${{ hashFiles('cpp/**', 'python/**/*.pyx', 
'python/**/*.pxd', 'BUILD', 'WORKSPACE') }}
       - name: Install bazel
         if: runner.os != 'Windows'
         run: ./ci/run_ci.sh install_bazel
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 7fa10156d..d7cece055 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -65,6 +65,28 @@ jobs:
         uses: actions/setup-python@v5
         with:
           python-version: 3.8
+          cache: 'pip'
+      - name: Cache Bazel binary
+        uses: actions/cache@v4
+        with:
+          path: |
+            ~/bin/bazel
+            ~/.local/bin/bazel
+          key: bazel-binary-${{ runner.os }}-${{ runner.arch }}-${{ 
hashFiles('.bazelversion') }}
+          restore-keys: |
+            bazel-binary-${{ runner.os }}-${{ runner.arch }}-
+      - name: Cache Bazel repository cache
+        uses: actions/cache@v4
+        with:
+          path: ~/.cache/bazel/_bazel_*/*/external
+          key: bazel-repo-${{ runner.os }}-${{ runner.arch }}-py38-${{ 
hashFiles('WORKSPACE', '.bazelrc', 'bazel/**') }}
+          restore-keys: |
+            bazel-repo-${{ runner.os }}-${{ runner.arch }}-py38-
+      - name: Cache Bazel build outputs
+        uses: actions/cache@v4
+        with:
+          path: ~/.cache/bazel
+          key: bazel-build-java-${{ runner.os }}-${{ runner.arch }}-${{ 
matrix.java-version }}-${{ hashFiles('cpp/**', 'python/**/*.pyx', 
'python/**/*.pxd', 'BUILD', 'WORKSPACE') }}
       - name: Install bazel
         run: python ./ci/run_ci.py cpp --install-deps-only
       - name: Install python dependencies
@@ -107,6 +129,28 @@ jobs:
         uses: actions/setup-python@v5
         with:
           python-version: 3.8
+          cache: 'pip'
+      - name: Cache Bazel binary
+        uses: actions/cache@v4
+        with:
+          path: |
+            ~/bin/bazel
+            ~/.local/bin/bazel
+          key: bazel-binary-${{ runner.os }}-${{ runner.arch }}-${{ 
hashFiles('.bazelversion') }}
+          restore-keys: |
+            bazel-binary-${{ runner.os }}-${{ runner.arch }}-
+      - name: Cache Bazel repository cache
+        uses: actions/cache@v4
+        with:
+          path: ~/.cache/bazel/_bazel_*/*/external
+          key: bazel-repo-${{ runner.os }}-${{ runner.arch }}-py38-${{ 
hashFiles('WORKSPACE', '.bazelrc', 'bazel/**') }}
+          restore-keys: |
+            bazel-repo-${{ runner.os }}-${{ runner.arch }}-py38-
+      - name: Cache Bazel build outputs
+        uses: actions/cache@v4
+        with:
+          path: ~/.cache/bazel
+          key: bazel-build-openj9-${{ runner.os }}-${{ runner.arch }}-${{ 
matrix.java-version }}-${{ hashFiles('cpp/**', 'python/**/*.pyx', 
'python/**/*.pxd', 'BUILD', 'WORKSPACE') }}
       - name: Install bazel
         run: python ./ci/run_ci.py cpp --install-deps-only
       - name: Install pyfory for xlang tests
@@ -324,6 +368,35 @@ jobs:
         uses: actions/setup-python@v5
         with:
           python-version: 3.11
+          cache: 'pip'
+      - name: Cache Bazel binary
+        uses: actions/cache@v4
+        with:
+          path: |
+            ~/bin/bazel
+            ~/.local/bin/bazel
+            C:\bazel\bazel.exe
+          key: bazel-binary-${{ runner.os }}-${{ runner.arch }}-${{ 
hashFiles('.bazelversion') }}
+          restore-keys: |
+            bazel-binary-${{ runner.os }}-${{ runner.arch }}-
+      - name: Cache Bazel repository cache
+        uses: actions/cache@v4
+        with:
+          path: |
+            ~/.cache/bazel/_bazel_*/*/external
+            ~/Library/Caches/bazel/_bazel_*/*/external
+            C:\users\runneradmin\_bazel_runneradmin\*/external
+          key: bazel-repo-${{ runner.os }}-${{ runner.arch }}-py311-${{ 
hashFiles('WORKSPACE', '.bazelrc', 'bazel/**') }}
+          restore-keys: |
+            bazel-repo-${{ runner.os }}-${{ runner.arch }}-py311-
+      - name: Cache Bazel build outputs
+        uses: actions/cache@v4
+        with:
+          path: |
+            ~/.cache/bazel
+            ~/Library/Caches/bazel
+            C:\users\runneradmin\_bazel_runneradmin
+          key: bazel-build-cpp-${{ runner.os }}-${{ runner.arch }}-${{ 
hashFiles('cpp/**', 'BUILD', 'WORKSPACE') }}
       - name: Run C++ CI with Bazel
         run: python ./ci/run_ci.py cpp
   python:
@@ -339,15 +412,35 @@ jobs:
         uses: actions/setup-python@v5
         with:
           python-version: ${{ matrix.python-version }}
+          cache: 'pip'
       - name: Cache Bazel binary
         uses: actions/cache@v4
         with:
           path: |
             ~/bin/bazel
             ~/.local/bin/bazel
-          key: bazel-${{ runner.os }}-${{ runner.arch }}-${{ 
hashFiles('.bazelversion') }}
+            C:\bazel\bazel.exe
+          key: bazel-binary-${{ runner.os }}-${{ runner.arch }}-${{ 
hashFiles('.bazelversion') }}
           restore-keys: |
-            bazel-${{ runner.os }}-${{ runner.arch }}-
+            bazel-binary-${{ runner.os }}-${{ runner.arch }}-
+      - name: Cache Bazel repository cache
+        uses: actions/cache@v4
+        with:
+          path: |
+            ~/.cache/bazel/_bazel_*/*/external
+            ~/Library/Caches/bazel/_bazel_*/*/external
+            C:\users\runneradmin\_bazel_runneradmin\*/external
+          key: bazel-repo-${{ runner.os }}-${{ runner.arch }}-${{ 
matrix.python-version }}-${{ hashFiles('WORKSPACE', '.bazelrc', 'bazel/**') }}
+          restore-keys: |
+            bazel-repo-${{ runner.os }}-${{ runner.arch }}-${{ 
matrix.python-version }}-
+      - name: Cache Bazel build outputs
+        uses: actions/cache@v4
+        with:
+          path: |
+            ~/.cache/bazel
+            ~/Library/Caches/bazel
+            C:\users\runneradmin\_bazel_runneradmin
+          key: bazel-build-python-${{ runner.os }}-${{ runner.arch }}-${{ 
matrix.python-version }}-${{ hashFiles('cpp/**', 'python/**/*.pyx', 
'python/**/*.pxd', 'BUILD', 'WORKSPACE') }}
       - name: Install bazel (Unix)
         if: runner.os != 'Windows'
         shell: bash
@@ -378,6 +471,28 @@ jobs:
         uses: actions/setup-python@v5
         with:
           python-version: 3.8
+          cache: 'pip'
+      - name: Cache Bazel binary
+        uses: actions/cache@v4
+        with:
+          path: |
+            ~/bin/bazel
+            ~/.local/bin/bazel
+          key: bazel-binary-${{ runner.os }}-${{ runner.arch }}-${{ 
hashFiles('.bazelversion') }}
+          restore-keys: |
+            bazel-binary-${{ runner.os }}-${{ runner.arch }}-
+      - name: Cache Bazel repository cache
+        uses: actions/cache@v4
+        with:
+          path: ~/.cache/bazel/_bazel_*/*/external
+          key: bazel-repo-${{ runner.os }}-${{ runner.arch }}-py38-${{ 
hashFiles('WORKSPACE', '.bazelrc', 'bazel/**') }}
+          restore-keys: |
+            bazel-repo-${{ runner.os }}-${{ runner.arch }}-py38-
+      - name: Cache Bazel build outputs
+        uses: actions/cache@v4
+        with:
+          path: ~/.cache/bazel
+          key: bazel-build-go-${{ runner.os }}-${{ runner.arch }}-${{ 
matrix.go-version }}-${{ hashFiles('cpp/**', 'python/**/*.pyx', 
'python/**/*.pxd', 'BUILD', 'WORKSPACE') }}
       - name: Install bazel
         run: python ./ci/run_ci.py cpp --install-deps-only
       - name: Install python dependencies


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to