@@ -47,15 +47,15 @@ jobs:
4747 fail-fast : false
4848 matrix :
4949 include :
50- - title : Ubuntu 24 .04, S3 + SigV4, bundled AWS SDK
51- runs-on : ubuntu-24 .04
50+ - title : Ubuntu 26 .04, S3 + SigV4, bundled AWS SDK
51+ runs-on : ubuntu-26 .04
5252 CC : gcc-14
5353 CXX : g++-14
5454 s3 : " ON"
5555 sigv4 : " ON"
5656 bundle_awssdk : " ON"
57- - title : Ubuntu 24 .04, S3 + SigV4, system AWS SDK
58- runs-on : ubuntu-24 .04
57+ - title : Ubuntu 26 .04, S3 + SigV4, system AWS SDK
58+ runs-on : ubuntu-26 .04
5959 CC : gcc-14
6060 CXX : g++-14
6161 s3 : " ON"
7474 AWS_DEFAULT_REGION : us-east-1
7575 AWS_ENDPOINT_URL : http://127.0.0.1:9000
7676 AWS_EC2_METADATA_DISABLED : " TRUE"
77+ SCCACHE_DIR : ${{ github.workspace }}/.sccache
78+ SCCACHE_CACHE_SIZE : " 2G"
7779 steps :
7880 - name : Checkout iceberg-cpp
7981 uses : actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
8284 - name : Install dependencies on Ubuntu
8385 if : ${{ startsWith(matrix.runs-on, 'ubuntu') }}
8486 shell : bash
85- run : sudo apt-get update && sudo apt-get install -y libcurl4-openssl-dev
87+ run : sudo apt-get update && sudo apt-get install -y libcurl4-openssl-dev libjitterentropy3-dev
8688 - name : Cache vcpkg packages
8789 if : ${{ startsWith(matrix.runs-on, 'ubuntu') && matrix.bundle_awssdk == 'OFF' }}
8890 uses : actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
@@ -113,19 +115,40 @@ jobs:
113115 if : ${{ matrix.s3 == 'ON' }}
114116 shell : bash
115117 run : bash ci/scripts/start_minio.sh
118+ - name : Restore sccache cache
119+ uses : actions/cache/restore@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
120+ with :
121+ path : ${{ github.workspace }}/.sccache
122+ key : sccache-aws-${{ matrix.runs-on }}-bundle${{ matrix.bundle_awssdk }}-s3${{ matrix.s3 }}-sigv4${{ matrix.sigv4 }}-${{ github.run_id }}
123+ restore-keys : |
124+ sccache-aws-${{ matrix.runs-on }}-bundle${{ matrix.bundle_awssdk }}-s3${{ matrix.s3 }}-sigv4${{ matrix.sigv4 }}-
125+ - name : Setup sccache
126+ uses : mozilla-actions/sccache-action@9e7fa8a12102821edf02ca5dbea1acd0f89a2696 # v0.0.10
116127 - name : Build and test Iceberg
117128 shell : bash
118129 env :
119130 CMAKE_TOOLCHAIN_FILE : ${{ startsWith(matrix.runs-on, 'ubuntu') && matrix.bundle_awssdk == 'OFF' && '/usr/local/share/vcpkg/scripts/buildsystems/vcpkg.cmake' || '' }}
120- run : ci/scripts/build_iceberg.sh "$(pwd)" OFF OFF ${{ matrix.s3 }} ${{ matrix.sigv4 }} ${{ matrix.bundle_awssdk }}
131+ run : ci/scripts/build_iceberg.sh "$(pwd)" OFF ON ${{ matrix.s3 }} ${{ matrix.sigv4 }} ${{ matrix.bundle_awssdk }}
132+ - name : Show sccache stats
133+ shell : bash
134+ run : sccache --show-stats
135+ - name : Save sccache cache
136+ if : github.ref == 'refs/heads/main'
137+ uses : actions/cache/save@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
138+ with :
139+ path : ${{ github.workspace }}/.sccache
140+ key : sccache-aws-${{ matrix.runs-on }}-bundle${{ matrix.bundle_awssdk }}-s3${{ matrix.s3 }}-sigv4${{ matrix.sigv4 }}-${{ github.run_id }}
121141
122142 # Exercise the Meson build with SigV4 enabled (resolves aws-cpp-sdk-core via
123143 # its CMake config, not pkg-config whose Cflags force -std=c++11).
124144 meson-sigv4 :
125145 if : ${{ github.event_name != 'pull_request' || github.event.pull_request.draft == false }}
126- name : Meson SigV4 (AMD64 Ubuntu 24 .04)
127- runs-on : ubuntu-24 .04
146+ name : Meson SigV4 (AMD64 Ubuntu 26 .04)
147+ runs-on : ubuntu-26 .04
128148 timeout-minutes : 45
149+ env :
150+ SCCACHE_DIR : ${{ github.workspace }}/.sccache
151+ SCCACHE_CACHE_SIZE : " 2G"
129152 steps :
130153 - uses : actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
131154 with :
@@ -137,7 +160,7 @@ jobs:
137160 - name : Install build dependencies
138161 shell : bash
139162 run : |
140- sudo apt-get update && sudo apt-get install -y libcurl4-openssl-dev
163+ sudo apt-get update && sudo apt-get install -y libcurl4-openssl-dev libjitterentropy3-dev
141164 python3 -m pip install --upgrade pip
142165 python3 -m pip install -r requirements.txt
143166 - name : Cache vcpkg packages
@@ -161,14 +184,32 @@ jobs:
161184 echo "::error::vcpkg install failed after 3 attempts"
162185 exit 1
163186 - name : Set Ubuntu Compilers
187+ # Wrap the compiler with sccache: Meson uses an explicit CC/CXX verbatim,
188+ # so the launcher must be prepended here to route compiles through sccache.
164189 run : |
165- echo "CC=gcc-14" >> $GITHUB_ENV
166- echo "CXX=g++-14" >> $GITHUB_ENV
190+ echo "CC=sccache gcc-14" >> $GITHUB_ENV
191+ echo "CXX=sccache g++-14" >> $GITHUB_ENV
192+ - name : Restore sccache cache
193+ uses : actions/cache/restore@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
194+ with :
195+ path : ${{ github.workspace }}/.sccache
196+ key : sccache-meson-sigv4-${{ github.run_id }}
197+ restore-keys : |
198+ sccache-meson-sigv4-
199+ - name : Setup sccache
200+ uses : mozilla-actions/sccache-action@9e7fa8a12102821edf02ca5dbea1acd0f89a2696 # v0.0.10
167201 - name : Build and test Iceberg
168202 shell : bash
169203 env :
170204 CMAKE_PREFIX_PATH : /usr/local/share/vcpkg/installed/x64-linux
171205 run : |
172206 meson setup builddir -Dsigv4=enabled
173207 meson compile -C builddir
208+ sccache --show-stats
174209 meson test -C builddir --timeout-multiplier 0 --print-errorlogs
210+ - name : Save sccache cache
211+ if : github.ref == 'refs/heads/main'
212+ uses : actions/cache/save@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
213+ with :
214+ path : ${{ github.workspace }}/.sccache
215+ key : sccache-meson-sigv4-${{ github.run_id }}
0 commit comments