From 4a893c1f5a9a28826181c5634d3c0e33b76d9c98 Mon Sep 17 00:00:00 2001 From: Rok Mihevc Date: Tue, 26 May 2026 22:49:11 +0200 Subject: [PATCH 1/3] store to ccache only from main --- .github/workflows/cpp.yml | 36 ++++++++++++---- .github/workflows/cpp_extra.yml | 72 +++++++++++++++++++++++-------- .github/workflows/cpp_windows.yml | 12 ++++-- 3 files changed, 90 insertions(+), 30 deletions(-) diff --git a/.github/workflows/cpp.yml b/.github/workflows/cpp.yml index 90c06c7be0e4..0c3a33436f44 100644 --- a/.github/workflows/cpp.yml +++ b/.github/workflows/cpp.yml @@ -119,11 +119,11 @@ jobs: persist-credentials: false fetch-depth: 0 submodules: recursive - - name: Cache Docker Volumes - uses: actions/cache@v5 + - name: Restore Docker Volumes + uses: actions/cache/restore@v5 with: path: .docker - key: ${{ matrix.image }}-${{ hashFiles('cpp/**') }} + key: ${{ matrix.image }}-${{ github.run_id }} restore-keys: ${{ matrix.image }}- - name: Setup Python on hosted runner if: | @@ -149,6 +149,12 @@ jobs: sudo sysctl -w vm.mmap_rnd_bits=28 source ci/scripts/util_enable_core_dumps.sh archery docker run ${{ matrix.image }} + - name: Save Docker Volumes + if: github.ref == 'refs/heads/main' + uses: actions/cache/save@v5 + with: + path: .docker + key: ${{ matrix.image }}-${{ github.run_id }} - name: Docker Push if: >- success() && @@ -254,11 +260,11 @@ jobs: id: ccache-info run: | echo "cache-dir=$(ccache --get-config cache_dir)" >> $GITHUB_OUTPUT - - name: Cache ccache - uses: actions/cache@v5 + - name: Restore ccache + uses: actions/cache/restore@v5 with: path: ${{ steps.ccache-info.outputs.cache-dir }} - key: cpp-ccache-macos-${{ matrix.macos-version }}-${{ hashFiles('cpp/**') }} + key: cpp-ccache-macos-${{ matrix.macos-version }}-${{ github.run_id }} restore-keys: cpp-ccache-macos-${{ matrix.macos-version }}- - name: Build run: | @@ -283,6 +289,12 @@ jobs: sudo sysctl -w kern.corefile=/tmp/core.%N.%P ulimit -c unlimited # must enable within the same shell ci/scripts/cpp_test.sh $(pwd) $(pwd)/build + - name: Save ccache + if: github.ref == 'refs/heads/main' + uses: actions/cache/save@v5 + with: + path: ${{ steps.ccache-info.outputs.cache-dir }} + key: cpp-ccache-macos-${{ matrix.macos-version }}-${{ github.run_id }} windows: if: ${{ !contains(github.event.pull_request.title, 'WIP') }} @@ -361,11 +373,11 @@ jobs: - name: Setup MSYS2 shell: msys2 {0} run: ci/scripts/msys2_setup.sh cpp - - name: Cache ccache - uses: actions/cache@v5 + - name: Restore ccache + uses: actions/cache/restore@v5 with: path: ccache - key: cpp-ccache-${{ matrix.msystem_lower}}-${{ hashFiles('cpp/**') }} + key: cpp-ccache-${{ matrix.msystem_lower}}-${{ github.run_id }} restore-keys: cpp-ccache-${{ matrix.msystem_lower}}- - name: Build shell: msys2 {0} @@ -405,3 +417,9 @@ jobs: shell: msys2 {0} run: | ci/scripts/cpp_test.sh "$(pwd)" "$(pwd)/build" + - name: Save ccache + if: github.ref == 'refs/heads/main' + uses: actions/cache/save@v5 + with: + path: ccache + key: cpp-ccache-${{ matrix.msystem_lower}}-${{ github.run_id }} diff --git a/.github/workflows/cpp_extra.yml b/.github/workflows/cpp_extra.yml index 73b06f9deec5..12f612235c9b 100644 --- a/.github/workflows/cpp_extra.yml +++ b/.github/workflows/cpp_extra.yml @@ -141,11 +141,11 @@ jobs: persist-credentials: false fetch-depth: 0 submodules: recursive - - name: Cache Docker Volumes - uses: actions/cache@v5 + - name: Restore Docker Volumes + uses: actions/cache/restore@v5 with: path: .docker - key: extra-${{ matrix.image }}-${{ hashFiles('cpp/**') }} + key: extra-${{ matrix.image }}-${{ github.run_id }} restore-keys: extra-${{ matrix.image }}- - name: Setup Python uses: actions/setup-python@v6 @@ -169,6 +169,12 @@ jobs: done fi archery docker run ${{ matrix.run-options || '' }} ${{ matrix.image }} + - name: Save Docker Volumes + if: github.ref == 'refs/heads/main' + uses: actions/cache/save@v5 + with: + path: .docker + key: extra-${{ matrix.image }}-${{ github.run_id }} - name: Docker Push if: >- success() && @@ -227,11 +233,11 @@ jobs: - name: Free up disk space run: | ci/scripts/util_free_space.sh - - name: Cache Docker Volumes - uses: actions/cache@v5 + - name: Restore Docker Volumes + uses: actions/cache/restore@v5 with: path: .docker - key: jni-${{ matrix.platform.runs-on }}-${{ hashFiles('cpp/**') }} + key: jni-${{ matrix.platform.runs-on }}-${{ github.run_id }} restore-keys: jni-${{ matrix.platform.runs-on }}- - name: Setup Python uses: actions/setup-python@v6 @@ -248,6 +254,12 @@ jobs: run: | source ci/scripts/util_enable_core_dumps.sh archery docker run cpp-jni + - name: Save Docker Volumes + if: github.ref == 'refs/heads/main' + uses: actions/cache/save@v5 + with: + path: .docker + key: jni-${{ matrix.platform.runs-on }}-${{ github.run_id }} - name: Docker Push if: >- success() && @@ -300,11 +312,11 @@ jobs: - name: Prepare ccache run: | echo "CCACHE_DIR=${PWD}/ccache" >> ${GITHUB_ENV} - - name: Cache ccache - uses: actions/cache@v5 + - name: Restore ccache + uses: actions/cache/restore@v5 with: path: ccache - key: jni-macos-${{ hashFiles('cpp/**') }} + key: jni-macos-${{ github.run_id }} restore-keys: jni-macos- - name: CMake run: | @@ -347,6 +359,12 @@ jobs: cmake --build cpp/examples/minimal_build.build cd cpp/examples/minimal_build ../minimal_build.build/arrow-example + - name: Save ccache + if: github.ref == 'refs/heads/main' + uses: actions/cache/save@v5 + with: + path: ccache + key: jni-macos-${{ github.run_id }} odbc-linux: needs: check-labels @@ -372,11 +390,11 @@ jobs: persist-credentials: false fetch-depth: 0 submodules: recursive - - name: Cache Docker Volumes - uses: actions/cache@v5 + - name: Restore Docker Volumes + uses: actions/cache/restore@v5 with: path: .docker - key: ubuntu-cpp-odbc-${{ hashFiles('cpp/**') }} + key: ubuntu-cpp-odbc-${{ github.run_id }} restore-keys: ubuntu-cpp-odbc- - name: Setup Python on hosted runner uses: actions/setup-python@v6 @@ -393,6 +411,12 @@ jobs: sudo sysctl -w vm.mmap_rnd_bits=28 source ci/scripts/util_enable_core_dumps.sh archery docker run ubuntu-cpp-odbc + - name: Save Docker Volumes + if: github.ref == 'refs/heads/main' + uses: actions/cache/save@v5 + with: + path: .docker + key: ubuntu-cpp-odbc-${{ github.run_id }} - name: Docker Push if: >- success() && @@ -464,11 +488,11 @@ jobs: id: ccache-info run: | echo "cache-dir=$(ccache --get-config cache_dir)" >> $GITHUB_OUTPUT - - name: Cache ccache - uses: actions/cache@v5.0.2 + - name: Restore ccache + uses: actions/cache/restore@v5 with: path: ${{ steps.ccache-info.outputs.cache-dir }} - key: cpp-odbc-ccache-macos-${{ matrix.macos-version }}-${{ matrix.build-type }}-${{ hashFiles('cpp/**') }} + key: cpp-odbc-ccache-macos-${{ matrix.macos-version }}-${{ matrix.build-type }}-${{ github.run_id }} restore-keys: cpp-odbc-ccache-macos-${{ matrix.macos-version }}-${{ matrix.build-type }}- - name: Build run: | @@ -530,6 +554,12 @@ jobs: sudo mkdir -p /Library/ODBC sudo chown -R $USER /Library/ODBC ci/scripts/cpp_test.sh $(pwd) $(pwd)/build + - name: Save ccache + if: github.ref == 'refs/heads/main' + uses: actions/cache/save@v5 + with: + path: ${{ steps.ccache-info.outputs.cache-dir }} + key: cpp-odbc-ccache-macos-${{ matrix.macos-version }}-${{ matrix.build-type }}-${{ github.run_id }} odbc-msvc: needs: check-labels @@ -589,11 +619,11 @@ jobs: shell: bash run: | echo "cache-dir=$(ccache --get-config cache_dir)" >> $GITHUB_OUTPUT - - name: Cache ccache - uses: actions/cache@v5 + - name: Restore ccache + uses: actions/cache/restore@v5 with: path: ${{ steps.ccache-info.outputs.cache-dir }} - key: cpp-odbc-ccache-windows-x64-${{ hashFiles('cpp/**') }} + key: cpp-odbc-ccache-windows-x64-${{ github.run_id }} restore-keys: cpp-odbc-ccache-windows-x64- - name: Checkout vcpkg uses: actions/checkout@v6 @@ -697,6 +727,12 @@ jobs: Write-Error "ODBC DLL not found" exit 1 + - name: Save ccache + if: github.ref == 'refs/heads/main' + uses: actions/cache/save@v5 + with: + path: ${{ steps.ccache-info.outputs.cache-dir }} + key: cpp-odbc-ccache-windows-x64-${{ github.run_id }} odbc-nightly: needs: odbc-msvc diff --git a/.github/workflows/cpp_windows.yml b/.github/workflows/cpp_windows.yml index 18afb74acea9..952d02a6efc9 100644 --- a/.github/workflows/cpp_windows.yml +++ b/.github/workflows/cpp_windows.yml @@ -107,11 +107,11 @@ jobs: shell: bash run: | echo "cache-dir=$(ccache --get-config cache_dir)" >> $GITHUB_OUTPUT - - name: Cache ccache - uses: actions/cache@v5 + - name: Restore ccache + uses: actions/cache/restore@v5 with: path: ${{ steps.ccache-info.outputs.cache-dir }} - key: cpp-ccache-windows-${{ inputs.arch }}-${{ hashFiles('cpp/**') }} + key: cpp-ccache-windows-${{ inputs.arch }}-${{ github.run_id }} restore-keys: cpp-ccache-windows-${{ inputs.arch }}- - name: Build shell: cmd @@ -130,3 +130,9 @@ jobs: # For ORC set TZDIR=%MSYS2_LOCATION%\usr\share\zoneinfo bash -c "ci/scripts/cpp_test.sh $(pwd) $(pwd)/build" + - name: Save ccache + if: github.ref == 'refs/heads/main' + uses: actions/cache/save@v5 + with: + path: ${{ steps.ccache-info.outputs.cache-dir }} + key: cpp-ccache-windows-${{ inputs.arch }}-${{ github.run_id }} From afb1a1f4ec01db9d14a17b51b8d02184e6649492 Mon Sep 17 00:00:00 2001 From: Rok Mihevc Date: Wed, 27 May 2026 13:45:08 +0200 Subject: [PATCH 2/3] save from main if not cancelled and before test --- .github/workflows/cpp.yml | 26 ++++++++++++------------- .github/workflows/cpp_extra.yml | 32 +++++++++++++++---------------- .github/workflows/cpp_windows.yml | 12 ++++++------ 3 files changed, 35 insertions(+), 35 deletions(-) diff --git a/.github/workflows/cpp.yml b/.github/workflows/cpp.yml index 0c3a33436f44..d647f321e325 100644 --- a/.github/workflows/cpp.yml +++ b/.github/workflows/cpp.yml @@ -150,7 +150,7 @@ jobs: source ci/scripts/util_enable_core_dumps.sh archery docker run ${{ matrix.image }} - name: Save Docker Volumes - if: github.ref == 'refs/heads/main' + if: ${{ !cancelled() && github.ref == 'refs/heads/main' }} uses: actions/cache/save@v5 with: path: .docker @@ -282,6 +282,12 @@ jobs: export BUILD_WARNING_LEVEL=PRODUCTION fi ci/scripts/cpp_build.sh $(pwd) $(pwd)/build + - name: Save ccache + if: ${{ !cancelled() && github.ref == 'refs/heads/main' }} + uses: actions/cache/save@v5 + with: + path: ${{ steps.ccache-info.outputs.cache-dir }} + key: cpp-ccache-macos-${{ matrix.macos-version }}-${{ github.run_id }} - name: Test shell: bash run: | @@ -289,12 +295,6 @@ jobs: sudo sysctl -w kern.corefile=/tmp/core.%N.%P ulimit -c unlimited # must enable within the same shell ci/scripts/cpp_test.sh $(pwd) $(pwd)/build - - name: Save ccache - if: github.ref == 'refs/heads/main' - uses: actions/cache/save@v5 - with: - path: ${{ steps.ccache-info.outputs.cache-dir }} - key: cpp-ccache-macos-${{ matrix.macos-version }}-${{ github.run_id }} windows: if: ${{ !contains(github.event.pull_request.title, 'WIP') }} @@ -384,6 +384,12 @@ jobs: run: | export CMAKE_BUILD_PARALLEL_LEVEL=$NUMBER_OF_PROCESSORS ci/scripts/cpp_build.sh "$(pwd)" "$(pwd)/build" + - name: Save ccache + if: ${{ !cancelled() && github.ref == 'refs/heads/main' }} + uses: actions/cache/save@v5 + with: + path: ccache + key: cpp-ccache-${{ matrix.msystem_lower}}-${{ github.run_id }} - name: Download Timezone Database if: matrix.msystem_upper == 'CLANG64' shell: bash @@ -417,9 +423,3 @@ jobs: shell: msys2 {0} run: | ci/scripts/cpp_test.sh "$(pwd)" "$(pwd)/build" - - name: Save ccache - if: github.ref == 'refs/heads/main' - uses: actions/cache/save@v5 - with: - path: ccache - key: cpp-ccache-${{ matrix.msystem_lower}}-${{ github.run_id }} diff --git a/.github/workflows/cpp_extra.yml b/.github/workflows/cpp_extra.yml index 12f612235c9b..d36cf99caeaf 100644 --- a/.github/workflows/cpp_extra.yml +++ b/.github/workflows/cpp_extra.yml @@ -170,7 +170,7 @@ jobs: fi archery docker run ${{ matrix.run-options || '' }} ${{ matrix.image }} - name: Save Docker Volumes - if: github.ref == 'refs/heads/main' + if: ${{ !cancelled() && github.ref == 'refs/heads/main' }} uses: actions/cache/save@v5 with: path: .docker @@ -255,7 +255,7 @@ jobs: source ci/scripts/util_enable_core_dumps.sh archery docker run cpp-jni - name: Save Docker Volumes - if: github.ref == 'refs/heads/main' + if: ${{ !cancelled() && github.ref == 'refs/heads/main' }} uses: actions/cache/save@v5 with: path: .docker @@ -360,7 +360,7 @@ jobs: cd cpp/examples/minimal_build ../minimal_build.build/arrow-example - name: Save ccache - if: github.ref == 'refs/heads/main' + if: ${{ !cancelled() && github.ref == 'refs/heads/main' }} uses: actions/cache/save@v5 with: path: ccache @@ -412,7 +412,7 @@ jobs: source ci/scripts/util_enable_core_dumps.sh archery docker run ubuntu-cpp-odbc - name: Save Docker Volumes - if: github.ref == 'refs/heads/main' + if: ${{ !cancelled() && github.ref == 'refs/heads/main' }} uses: actions/cache/save@v5 with: path: .docker @@ -510,6 +510,12 @@ jobs: export ARROW_CMAKE_ARGS="-DODBC_INCLUDE_DIR=$ODBC_INCLUDE_DIR" export CXXFLAGS="$CXXFLAGS -I$ODBC_INCLUDE_DIR" ci/scripts/cpp_build.sh $(pwd) $(pwd)/build + - name: Save ccache + if: ${{ !cancelled() && github.ref == 'refs/heads/main' }} + uses: actions/cache/save@v5 + with: + path: ${{ steps.ccache-info.outputs.cache-dir }} + key: cpp-odbc-ccache-macos-${{ matrix.macos-version }}-${{ matrix.build-type }}-${{ github.run_id }} - name: Setup Python uses: actions/setup-python@v6 with: @@ -554,12 +560,6 @@ jobs: sudo mkdir -p /Library/ODBC sudo chown -R $USER /Library/ODBC ci/scripts/cpp_test.sh $(pwd) $(pwd)/build - - name: Save ccache - if: github.ref == 'refs/heads/main' - uses: actions/cache/save@v5 - with: - path: ${{ steps.ccache-info.outputs.cache-dir }} - key: cpp-odbc-ccache-macos-${{ matrix.macos-version }}-${{ matrix.build-type }}-${{ github.run_id }} odbc-msvc: needs: check-labels @@ -660,6 +660,12 @@ jobs: call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" x64 set VCPKG_ROOT=%VCPKG_ROOT_KEEP% bash -c "ci/scripts/cpp_build.sh $(pwd) $(pwd)/build" + - name: Save ccache + if: ${{ !cancelled() && github.ref == 'refs/heads/main' }} + uses: actions/cache/save@v5 + with: + path: ${{ steps.ccache-info.outputs.cache-dir }} + key: cpp-odbc-ccache-windows-x64-${{ github.run_id }} - name: Register Flight SQL ODBC Driver shell: cmd run: | @@ -727,12 +733,6 @@ jobs: Write-Error "ODBC DLL not found" exit 1 - - name: Save ccache - if: github.ref == 'refs/heads/main' - uses: actions/cache/save@v5 - with: - path: ${{ steps.ccache-info.outputs.cache-dir }} - key: cpp-odbc-ccache-windows-x64-${{ github.run_id }} odbc-nightly: needs: odbc-msvc diff --git a/.github/workflows/cpp_windows.yml b/.github/workflows/cpp_windows.yml index 952d02a6efc9..a0ad7673f846 100644 --- a/.github/workflows/cpp_windows.yml +++ b/.github/workflows/cpp_windows.yml @@ -120,6 +120,12 @@ jobs: run: | call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" %VCVARS_ARCH% bash -c "ci/scripts/cpp_build.sh $(pwd) $(pwd)/build" + - name: Save ccache + if: ${{ !cancelled() && github.ref == 'refs/heads/main' }} + uses: actions/cache/save@v5 + with: + path: ${{ steps.ccache-info.outputs.cache-dir }} + key: cpp-ccache-windows-${{ inputs.arch }}-${{ github.run_id }} - name: Test shell: cmd env: @@ -130,9 +136,3 @@ jobs: # For ORC set TZDIR=%MSYS2_LOCATION%\usr\share\zoneinfo bash -c "ci/scripts/cpp_test.sh $(pwd) $(pwd)/build" - - name: Save ccache - if: github.ref == 'refs/heads/main' - uses: actions/cache/save@v5 - with: - path: ${{ steps.ccache-info.outputs.cache-dir }} - key: cpp-ccache-windows-${{ inputs.arch }}-${{ github.run_id }} From 3b73f71d8c54d28f7ce9b720f51e48146cb2dd1d Mon Sep 17 00:00:00 2001 From: Rok Mihevc Date: Wed, 27 May 2026 16:25:08 +0200 Subject: [PATCH 3/3] Cache steps now continue-on-error: true --- .github/workflows/cpp.yml | 3 +++ .github/workflows/cpp_extra.yml | 6 ++++++ .github/workflows/cpp_windows.yml | 1 + 3 files changed, 10 insertions(+) diff --git a/.github/workflows/cpp.yml b/.github/workflows/cpp.yml index d647f321e325..15ea5d850958 100644 --- a/.github/workflows/cpp.yml +++ b/.github/workflows/cpp.yml @@ -151,6 +151,7 @@ jobs: archery docker run ${{ matrix.image }} - name: Save Docker Volumes if: ${{ !cancelled() && github.ref == 'refs/heads/main' }} + continue-on-error: true uses: actions/cache/save@v5 with: path: .docker @@ -284,6 +285,7 @@ jobs: ci/scripts/cpp_build.sh $(pwd) $(pwd)/build - name: Save ccache if: ${{ !cancelled() && github.ref == 'refs/heads/main' }} + continue-on-error: true uses: actions/cache/save@v5 with: path: ${{ steps.ccache-info.outputs.cache-dir }} @@ -386,6 +388,7 @@ jobs: ci/scripts/cpp_build.sh "$(pwd)" "$(pwd)/build" - name: Save ccache if: ${{ !cancelled() && github.ref == 'refs/heads/main' }} + continue-on-error: true uses: actions/cache/save@v5 with: path: ccache diff --git a/.github/workflows/cpp_extra.yml b/.github/workflows/cpp_extra.yml index d36cf99caeaf..6b573f850116 100644 --- a/.github/workflows/cpp_extra.yml +++ b/.github/workflows/cpp_extra.yml @@ -171,6 +171,7 @@ jobs: archery docker run ${{ matrix.run-options || '' }} ${{ matrix.image }} - name: Save Docker Volumes if: ${{ !cancelled() && github.ref == 'refs/heads/main' }} + continue-on-error: true uses: actions/cache/save@v5 with: path: .docker @@ -256,6 +257,7 @@ jobs: archery docker run cpp-jni - name: Save Docker Volumes if: ${{ !cancelled() && github.ref == 'refs/heads/main' }} + continue-on-error: true uses: actions/cache/save@v5 with: path: .docker @@ -361,6 +363,7 @@ jobs: ../minimal_build.build/arrow-example - name: Save ccache if: ${{ !cancelled() && github.ref == 'refs/heads/main' }} + continue-on-error: true uses: actions/cache/save@v5 with: path: ccache @@ -413,6 +416,7 @@ jobs: archery docker run ubuntu-cpp-odbc - name: Save Docker Volumes if: ${{ !cancelled() && github.ref == 'refs/heads/main' }} + continue-on-error: true uses: actions/cache/save@v5 with: path: .docker @@ -512,6 +516,7 @@ jobs: ci/scripts/cpp_build.sh $(pwd) $(pwd)/build - name: Save ccache if: ${{ !cancelled() && github.ref == 'refs/heads/main' }} + continue-on-error: true uses: actions/cache/save@v5 with: path: ${{ steps.ccache-info.outputs.cache-dir }} @@ -662,6 +667,7 @@ jobs: bash -c "ci/scripts/cpp_build.sh $(pwd) $(pwd)/build" - name: Save ccache if: ${{ !cancelled() && github.ref == 'refs/heads/main' }} + continue-on-error: true uses: actions/cache/save@v5 with: path: ${{ steps.ccache-info.outputs.cache-dir }} diff --git a/.github/workflows/cpp_windows.yml b/.github/workflows/cpp_windows.yml index a0ad7673f846..41073ba9b9c1 100644 --- a/.github/workflows/cpp_windows.yml +++ b/.github/workflows/cpp_windows.yml @@ -122,6 +122,7 @@ jobs: bash -c "ci/scripts/cpp_build.sh $(pwd) $(pwd)/build" - name: Save ccache if: ${{ !cancelled() && github.ref == 'refs/heads/main' }} + continue-on-error: true uses: actions/cache/save@v5 with: path: ${{ steps.ccache-info.outputs.cache-dir }}