Skip to content

Prepare 3.10.281.1 with isolated SQLite and provider-aware packages #6813

Prepare 3.10.281.1 with isolated SQLite and provider-aware packages

Prepare 3.10.281.1 with isolated SQLite and provider-aware packages #6813

name: C/C++ CI on Linux and Mac
on:
push:
branches:
- master
- main
- dev
- dev/*
- release/*
- buildme/*
- fix/*
pull_request:
branches:
- master
- main
- dev
schedule:
- cron: 0 2 * * 1-5
# Least-privilege GITHUB_TOKEN scope: this workflow only checks out source
# and runs the Linux/Mac build matrix. Explicit block satisfies CodeQL rule
# actions/missing-workflow-permissions if Actions analysis is enabled.
permissions:
contents: read
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
jobs:
build-runner:
name: Build runner contracts (${{ matrix.os }})
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
steps:
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
- name: Verify test-runner failure propagation
run: python3 tests/build-runner-tests.py
build:
runs-on: ${{ matrix.os }}
env:
CMAKE_POLICY_VERSION_MINIMUM: "3.5"
strategy:
matrix:
config: [release, debug]
os: [ubuntu-latest, macOS-latest]
steps:
- name: Checkout
uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
- name: Initialize googletest
run: git submodule update --init --depth=1 third_party/googletest
- name: Test ${{ matrix.os }} ${{ matrix.config }}
run: ./build-tests.sh ${{ matrix.config }}
device-id-optout:
name: Device-ID opt-out (${{ matrix.os }})
runs-on: ${{ matrix.os }}
env:
CMAKE_POLICY_VERSION_MINIMUM: "3.5"
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macOS-latest, windows-2022]
steps:
- name: Checkout
uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
- name: Initialize googletest
run: git submodule update --init --depth=1 third_party/googletest
- name: Test Linux/macOS without native device-ID collection
if: runner.os != 'Windows'
env:
CMAKE_OPTS: -DMATSDK_ENABLE_DEVICE_ID=OFF
run: ./build-tests.sh debug
- name: setup-msbuild
if: runner.os == 'Windows'
uses: microsoft/setup-msbuild@6fb02220983dee41ce7ae257b6f4d8f9bf5ed4ce # v2.0.0
with:
vs-version: '[17,)'
- name: Test Windows without native device-ID collection
if: runner.os == 'Windows'
shell: cmd
run: build-tests.cmd x64 Debug "tests\device-id-optout.props" WinHTTP
- name: Verify vcpkg feature mapping
run: cmake -P tests/vcpkg/device-id-feature-tests.cmake
public-headers:
name: Public header gate (GCC/Clang)
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
- name: Install clang
run: sudo apt-get update && sudo apt-get install -y clang
- name: Compile each public header standalone under strict flags
run: bash tests/headers/check_public_headers.sh
no-exceptions:
name: Full SDK without C++ exceptions (${{ matrix.os }}, ${{ matrix.compiler }})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-latest
compiler: gcc
cc: gcc
cxx: g++
- os: ubuntu-latest
compiler: clang
cc: clang
cxx: clang++
- os: macos-latest
compiler: appleclang
cc: clang
cxx: clang++
env:
CC: ${{ matrix.cc }}
CXX: ${{ matrix.cxx }}
steps:
- name: Checkout
uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
- name: Install build dependencies
if: runner.os == 'Linux'
run: sudo apt-get update && sudo apt-get install -y clang libcurl4-openssl-dev libsqlite3-dev zlib1g-dev
- name: Configure
run: >-
cmake -S tests/no-exceptions -B out-no-exceptions
-DCMAKE_BUILD_TYPE=Debug
- name: Compile full SDK
run: >-
cmake --build out-no-exceptions --target no-exceptions-smoke --parallel 2
- name: Exercise no-exceptions runtime failure paths
run: ctest --test-dir out-no-exceptions --output-on-failure
- name: Public headers and exception macro regression
if: runner.os == 'macOS'
run: bash tests/headers/check_public_headers.sh