This is an automated email from the ASF dual-hosted git repository. tuhaihe pushed a commit to branch REL_2_STABLE in repository https://gitbox.apache.org/repos/asf/cloudberry-pxf.git
commit d492dfad481683faf57d02b323317d254b0265c5 Author: Nikolay Antonov <[email protected]> AuthorDate: Fri Apr 3 17:06:34 2026 +0500 CI: cache deb and rpm for month (#94) **Cache CPU-heavy CI steps:** * DEB build * RPM build This should speed up our CI pipelines and reduce github actions quota usage. **Implementations details:** * Github cache has 7 days TTL. Every build will reset expiration timeout. In order to force CI to build cloudberry from time to time - I am explicitly specifying current month in a cache key. * keep both: `actions/cache` and `actions/actions/upload-artifact`. In case cache eviction happens during build (e.g. hit 10Gb limit) we will still have running builds. * cache reused between `main` and other PRs (but not between PRs). So, cache will be filled only during builds in `main`. --- .github/workflows/pxf-ci.yml | 54 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/.github/workflows/pxf-ci.yml b/.github/workflows/pxf-ci.yml index 55b47f95..a93fa0dc 100644 --- a/.github/workflows/pxf-ci.yml +++ b/.github/workflows/pxf-ci.yml @@ -52,7 +52,21 @@ jobs: image: apache/incubator-cloudberry:cbdb-build-ubuntu22.04-latest options: --user root steps: + - name: Get month number + id: get-month + run: echo "month=$(/bin/date -u '+%Y-%m')" >> "$GITHUB_OUTPUT" + + - name: Restore DEB cache + id: cache-deb + uses: actions/cache/restore@v4 + with: + path: | + workspace/cloudberry-deb + workspace/cloudberry-source.tar.gz + key: cloudberry-deb-${{ runner.os }}-${{ steps.get-month.outputs.month }} + - name: Checkout Cloudberry source + if: steps.cache-deb.outputs.cache-hit != 'true' uses: actions/checkout@v4 with: repository: apache/cloudberry @@ -61,11 +75,13 @@ jobs: submodules: true - name: Checkout PXF source (for build script) + if: steps.cache-deb.outputs.cache-hit != 'true' uses: actions/checkout@v4 with: path: cloudberry-pxf - name: Build Cloudberry DEB + if: steps.cache-deb.outputs.cache-hit != 'true' run: | export WORKSPACE=$PWD/workspace export CLOUDBERRY_VERSION=99.0.0 @@ -73,10 +89,21 @@ jobs: bash cloudberry-pxf/ci/docker/pxf-cbdb-dev/ubuntu/script/build_cloudberry_deb.sh - name: Package Cloudberry source + if: steps.cache-deb.outputs.cache-hit != 'true' run: | cd workspace tar czf cloudberry-source.tar.gz cloudberry/ + - name: Save DEB cache + # save cache from default branch only (this cache can be reused between PRs) + if: steps.cache-deb.outputs.cache-hit != 'true' && github.ref == 'refs/heads/main' + uses: actions/cache/save@v4 + with: + path: | + workspace/cloudberry-deb + workspace/cloudberry-source.tar.gz + key: cloudberry-deb-${{ runner.os }}-${{ steps.get-month.outputs.month }} + - name: Upload DEB artifact uses: actions/upload-artifact@v4 with: @@ -98,7 +125,21 @@ jobs: image: apache/incubator-cloudberry:cbdb-build-rocky9-latest options: --user root steps: + - name: Get month number + id: get-month + run: echo "month=$(/bin/date -u '+%Y-%m')" >> "$GITHUB_OUTPUT" + + - name: Restore RPM cache + id: cache-rpm + uses: actions/cache/restore@v4 + with: + path: | + workspace/cloudberry-rpm + workspace/cloudberry-source-rocky9.tar.gz + key: cloudberry-rpm-${{ runner.os }}-${{ steps.get-month.outputs.month }} + - name: Checkout Cloudberry source + if: steps.cache-rpm.outputs.cache-hit != 'true' uses: actions/checkout@v4 with: repository: apache/cloudberry @@ -107,11 +148,13 @@ jobs: submodules: true - name: Checkout PXF source (for build script) + if: steps.cache-rpm.outputs.cache-hit != 'true' uses: actions/checkout@v4 with: path: cloudberry-pxf - name: Build Cloudberry RPM + if: steps.cache-rpm.outputs.cache-hit != 'true' run: | export WORKSPACE=$PWD/workspace export CLOUDBERRY_VERSION=99.0.0 @@ -119,10 +162,21 @@ jobs: bash cloudberry-pxf/ci/docker/pxf-cbdb-dev/rocky9/script/build_cloudberry_rpm.sh - name: Package Cloudberry source + if: steps.cache-rpm.outputs.cache-hit != 'true' run: | cd workspace tar czf cloudberry-source-rocky9.tar.gz cloudberry/ + - name: Save RPM cache + # save cache from default branch only (this cache can be reused between PRs) + if: steps.cache-rpm.outputs.cache-hit != 'true' && github.ref == 'refs/heads/main' + uses: actions/cache/save@v4 + with: + path: | + workspace/cloudberry-rpm + workspace/cloudberry-source-rocky9.tar.gz + key: cloudberry-rpm-${{ runner.os }}-${{ steps.get-month.outputs.month }} + - name: Upload RPM artifact uses: actions/upload-artifact@v4 with: --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
