4545jobs :
4646 ubuntu :
4747 if : ${{ github.event_name != 'pull_request' || github.event.pull_request.draft == false }}
48- name : AMD64 Ubuntu 26.04 (${{ matrix.cmake_build_type }})
48+ name : AMD64 Ubuntu 26.04 (${{ matrix.cmake_build_type }}, ${{ matrix.api_mode }} )
4949 runs-on : ubuntu-26.04
5050 timeout-minutes : 60
5151 strategy :
5252 fail-fast : false
5353 matrix :
54- cmake_build_type :
55- - Debug
56- - RelWithDebInfo
54+ include :
55+ - cmake_build_type : Debug
56+ extra_cmake_args : " -DICEBERG_CXX20_COMPAT=ON"
57+ api_mode : C++20 Compat
58+ - cmake_build_type : RelWithDebInfo
59+ extra_cmake_args : " "
60+ api_mode : C++23
5761 steps :
5862 - name : Checkout iceberg-cpp
5963 uses : actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
@@ -71,22 +75,46 @@ jobs:
7175 env :
7276 CC : gcc-14
7377 CXX : g++-14
74- run : ci/scripts/build_iceberg.sh $(pwd) ON ON OFF OFF ON ${{ matrix.cmake_build_type }}
78+ ICEBERG_EXTRA_CMAKE_ARGS : ${{ matrix.extra_cmake_args }}
79+ run : |
80+ ci/scripts/build_iceberg.sh \
81+ --source-dir "$(pwd)" \
82+ --build-type "${{ matrix.cmake_build_type }}" \
83+ --sccache ON \
84+ --rest-integration-tests ON \
85+ --s3 OFF \
86+ --sigv4 OFF \
87+ --bundle-awssdk ON
88+ - name : Build Example (C++20)
89+ if : matrix.cmake_build_type == 'Debug'
90+ shell : bash
91+ env :
92+ CC : gcc-14
93+ CXX : g++-14
94+ run : |
95+ ci/scripts/build_example.sh \
96+ --source-dir "$(pwd)/example" \
97+ --build-type "${{ matrix.cmake_build_type }}" \
98+ --cxx-standard 20
99+ - name : Build Example (C++23)
100+ shell : bash
101+ env :
102+ CC : gcc-14
103+ CXX : g++-14
104+ run : |
105+ ci/scripts/build_example.sh \
106+ --source-dir "$(pwd)/example" \
107+ --build-type "${{ matrix.cmake_build_type }}" \
108+ --cxx-standard 23
75109 - name : Save sccache
76110 if : always()
77111 uses : ./.github/actions/save-sccache
78112 with :
79113 key-prefix : sccache-test-ubuntu-${{ matrix.cmake_build_type }}
80114 job-status : ${{ job.status }}
81- - name : Build Example
82- shell : bash
83- env :
84- CC : gcc-14
85- CXX : g++-14
86- run : ci/scripts/build_example.sh $(pwd)/example
87115 hive :
88116 if : ${{ github.event_name != 'pull_request' || github.event.pull_request.draft == false }}
89- name : AMD64 Ubuntu 26.04 Hive
117+ name : AMD64 Ubuntu 26.04 Hive (C++23)
90118 runs-on : ubuntu-26.04
91119 timeout-minutes : 45
92120 strategy :
@@ -118,7 +146,11 @@ jobs:
118146 env :
119147 CC : gcc-14
120148 CXX : g++-14
121- run : ci/scripts/build_iceberg.sh $(pwd) OFF ON
149+ run : |
150+ ci/scripts/build_iceberg.sh \
151+ --source-dir "$(pwd)" \
152+ --build-type Debug \
153+ --sccache ON
122154 - name : Show sccache stats
123155 shell : bash
124156 run : sccache --show-stats
@@ -130,7 +162,7 @@ jobs:
130162 key : sccache-test-hive-${{ github.run_id }}
131163 macos :
132164 if : ${{ github.event_name != 'pull_request' || github.event.pull_request.draft == false }}
133- name : AArch64 macOS 26
165+ name : AArch64 macOS 26 (C++20 Compat)
134166 runs-on : macos-26
135167 timeout-minutes : 30
136168 strategy :
@@ -146,19 +178,36 @@ jobs:
146178 key-prefix : sccache-test-macos
147179 - name : Build Iceberg
148180 shell : bash
149- run : ci/scripts/build_iceberg.sh $(pwd) OFF ON
181+ env :
182+ ICEBERG_EXTRA_CMAKE_ARGS : " -DICEBERG_CXX20_COMPAT=ON"
183+ run : |
184+ ci/scripts/build_iceberg.sh \
185+ --source-dir "$(pwd)" \
186+ --build-type Debug \
187+ --sccache ON
150188 - name : Save sccache
151189 if : always()
152190 uses : ./.github/actions/save-sccache
153191 with :
154192 key-prefix : sccache-test-macos
155193 job-status : ${{ job.status }}
156- - name : Build Example
194+ - name : Build Example (C++20)
195+ shell : bash
196+ run : |
197+ ci/scripts/build_example.sh \
198+ --source-dir "$(pwd)/example" \
199+ --build-type Debug \
200+ --cxx-standard 20
201+ - name : Build Example (C++23)
157202 shell : bash
158- run : ci/scripts/build_example.sh $(pwd)/example
203+ run : |
204+ ci/scripts/build_example.sh \
205+ --source-dir "$(pwd)/example" \
206+ --build-type Debug \
207+ --cxx-standard 23
159208 windows :
160209 if : ${{ github.event_name != 'pull_request' || github.event.pull_request.draft == false }}
161- name : AMD64 Windows 2025
210+ name : AMD64 Windows 2025 (C++20 Compat)
162211 runs-on : windows-2025
163212 timeout-minutes : 60
164213 strategy :
@@ -189,18 +238,40 @@ jobs:
189238 key-prefix : sccache-test-windows
190239 - name : Build Iceberg
191240 shell : pwsh
241+ env :
242+ ICEBERG_EXTRA_CMAKE_ARGS : " -DICEBERG_CXX20_COMPAT=ON"
192243 run : |
193244 $ErrorActionPreference = "Stop"
194- bash -lc 'ci/scripts/build_iceberg.sh $(pwd) OFF ON'
245+ bash -lc '
246+ ci/scripts/build_iceberg.sh \
247+ --source-dir "$(pwd)" \
248+ --build-type Debug \
249+ --sccache ON
250+ '
195251 if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
196252 - name : Save sccache
197253 if : always()
198254 uses : ./.github/actions/save-sccache
199255 with :
200256 key-prefix : sccache-test-windows
201257 job-status : ${{ job.status }}
202- - name : Build Example
258+ - name : Build Example (C++20)
259+ shell : pwsh
260+ run : |
261+ $ErrorActionPreference = "Stop"
262+ bash -lc '
263+ ci/scripts/build_example.sh \
264+ --source-dir "$(pwd)/example" \
265+ --build-type Debug \
266+ --cxx-standard 20
267+ '
268+ - name : Build Example (C++23)
203269 shell : pwsh
204270 run : |
205271 $ErrorActionPreference = "Stop"
206- bash -lc 'ci/scripts/build_example.sh $(pwd)/example'
272+ bash -lc '
273+ ci/scripts/build_example.sh \
274+ --source-dir "$(pwd)/example" \
275+ --build-type Debug \
276+ --cxx-standard 23
277+ '
0 commit comments