Skip to content

ci: apply github workflow best practice (zizmor/codeql/asf-allowlist-check) #3245

ci: apply github workflow best practice (zizmor/codeql/asf-allowlist-check)

ci: apply github workflow best practice (zizmor/codeql/asf-allowlist-check) #3245

Workflow file for this run

# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
name: Test
on:
push:
branches:
- '**'
- '!dependabot/**'
tags:
- '**'
pull_request:
concurrency:
group: ${{ github.repository }}-${{ github.head_ref || github.sha }}-${{ github.workflow }}
cancel-in-progress: true
permissions:
contents: read
env:
ICEBERG_HOME: /tmp/iceberg
jobs:
ubuntu:
name: AMD64 Ubuntu 24.04
runs-on: ubuntu-24.04
timeout-minutes: 30
steps:
- name: Checkout iceberg-cpp
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- name: Install dependencies
shell: bash
run: sudo apt-get update && sudo apt-get install -y libcurl4-openssl-dev
- name: Build Iceberg
shell: bash
env:
CC: gcc-14
CXX: g++-14
run: ci/scripts/build_iceberg.sh $(pwd) ON
- name: Build Example
shell: bash
env:
CC: gcc-14
CXX: g++-14
run: ci/scripts/build_example.sh $(pwd)/example
macos:
name: AArch64 macOS 26
runs-on: macos-26
timeout-minutes: 30
steps:
- name: Checkout iceberg-cpp
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- name: Build Iceberg
shell: bash
run: ci/scripts/build_iceberg.sh $(pwd)
- name: Build Example
shell: bash
run: ci/scripts/build_example.sh $(pwd)/example
windows:
name: AMD64 Windows 2025
runs-on: windows-2025
timeout-minutes: 60
steps:
- name: Checkout iceberg-cpp
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- name: Install dependencies
shell: pwsh
run: |
vcpkg install zlib:x64-windows nlohmann-json:x64-windows nanoarrow:x64-windows roaring:x64-windows cpr:x64-windows
- name: Setup sccache
uses: mozilla-actions/sccache-action@7d986dd989559c6ecdb630a3fd2557667be217ad # v0.0.9 # zizmor: ignore[cache-poisoning]
- name: Build Iceberg
shell: pwsh
env:
SCCACHE_GHA_ENABLED: "true"
run: |
$ErrorActionPreference = "Stop"
cmd /c "call \"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat\" x64 && bash -lc \"ci/scripts/build_iceberg.sh `$(pwd) OFF ON\""
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
sccache --show-stats
- name: Build Example
shell: pwsh
run: |
$ErrorActionPreference = "Stop"
cmd /c "call \"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat\" x64 && bash -lc \"ci/scripts/build_example.sh `$(pwd)/example\""
meson:
name: Meson - ${{ matrix.title }}
runs-on: ${{ matrix.runs-on }}
timeout-minutes: 30
strategy:
max-parallel: 15
fail-fast: false
matrix:
include:
- title: AMD64 Ubuntu 24.04
runs-on: ubuntu-24.04
CC: gcc-14
CXX: g++-14
meson-setup-args: -Drest_integration_test=enabled
- title: AMD64 Windows 2025
runs-on: windows-2025
meson-setup-args: --vsenv
- title: AArch64 macOS 26
runs-on: macos-26
steps:
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
with:
python-version: '3.x'
- name: Checkout iceberg-cpp
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- name: Install build dependencies
run: |
python3 -m pip install --upgrade pip
python3 -m pip install -r requirements.txt
- name: Set Ubuntu Compilers
if: ${{ startsWith(matrix.runs-on, 'ubuntu') }}
run: |
echo "CC=${{ matrix.CC }}" >> $GITHUB_ENV
echo "CXX=${{ matrix.CXX }}" >> $GITHUB_ENV
- name: Build Iceberg
run: |
meson setup builddir ${{ matrix.meson-setup-args || '' }}
meson compile -C builddir
- name: Test Iceberg
run: |
meson test -C builddir --timeout-multiplier 0