125 lines
4.3 KiB
YAML
125 lines
4.3 KiB
YAML
# Smoke invariants — "the shipped binary does not fail" — across the WIDEST set of
|
|
# GitHub-hosted runners. Builds the prod binary and runs scripts/smoke-invariants.sh
|
|
# (version/help, MCP initialize handshake [#513], all 14 tools invocable, malformed-
|
|
# input resilience, clean EOF exit, shared-lib resolution, install dry-run).
|
|
#
|
|
# Maximizing platforms is the point: ubuntu-22.04 (older glibc → AlmaLinux/#182
|
|
# class), all arm64 variants + windows-11-arm (arch portability), multiple macOS
|
|
# and Windows versions. A FAIL on any platform is a binary users would receive.
|
|
#
|
|
# NON-GATING: workflow_dispatch + push to qa/smoke-** only (the full ~10-platform
|
|
# build is heavy, so it is opt-in rather than on every qa push).
|
|
name: Smoke (all platforms)
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
push:
|
|
branches: ['qa/smoke-**']
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
# ── Unix: linux amd64+arm64 (incl. older glibc 22.04), darwin arm64+amd64 ──
|
|
smoke-unix:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- os: ubuntu-22.04 # older glibc — AlmaLinux/#182 portability class
|
|
cc: gcc
|
|
cxx: g++
|
|
- os: ubuntu-24.04
|
|
cc: gcc
|
|
cxx: g++
|
|
- os: ubuntu-22.04-arm
|
|
cc: gcc
|
|
cxx: g++
|
|
- os: ubuntu-24.04-arm
|
|
cc: gcc
|
|
cxx: g++
|
|
- os: macos-14 # arm64
|
|
cc: cc
|
|
cxx: c++
|
|
- os: macos-15 # arm64
|
|
cc: cc
|
|
cxx: c++
|
|
- os: macos-15-intel # x86_64
|
|
cc: cc
|
|
cxx: c++
|
|
runs-on: ${{ matrix.os }}
|
|
timeout-minutes: 240
|
|
steps:
|
|
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
|
- name: Install deps (Linux)
|
|
if: startsWith(matrix.os, 'ubuntu')
|
|
run: sudo apt-get update && sudo apt-get install -y zlib1g-dev python3 git
|
|
- name: Build (prod binary)
|
|
run: scripts/build.sh CC=${{ matrix.cc }} CXX=${{ matrix.cxx }}
|
|
- name: Smoke invariants
|
|
run: |
|
|
chmod +x scripts/smoke-invariants.sh
|
|
scripts/smoke-invariants.sh build/c/codebase-memory-mcp
|
|
|
|
# ── Windows x64: 2022 + 2025 (msys2 CLANG64) ──────────────────────────────
|
|
smoke-windows-x64:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os: [windows-2022, windows-2025]
|
|
runs-on: ${{ matrix.os }}
|
|
timeout-minutes: 240
|
|
steps:
|
|
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
|
- uses: msys2/setup-msys2@66cd2cce69caa17b53920067426061ca1de3a884 # v2
|
|
with:
|
|
msystem: CLANG64
|
|
path-type: inherit
|
|
install: >-
|
|
mingw-w64-clang-x86_64-clang
|
|
mingw-w64-clang-x86_64-zlib
|
|
mingw-w64-clang-x86_64-python3
|
|
make
|
|
git
|
|
coreutils
|
|
- name: Build (prod binary)
|
|
shell: msys2 {0}
|
|
run: scripts/build.sh CC=clang CXX=clang++
|
|
- name: Smoke invariants
|
|
shell: msys2 {0}
|
|
run: |
|
|
chmod +x scripts/smoke-invariants.sh
|
|
BIN=build/c/codebase-memory-mcp
|
|
[ -f "${BIN}.exe" ] && BIN="${BIN}.exe"
|
|
scripts/smoke-invariants.sh "$BIN"
|
|
|
|
# ── Windows arm64: windows-11-arm (msys2 CLANGARM64) — experimental ───────
|
|
# Best-effort: surfaces whether our binary builds + smokes on Windows on ARM.
|
|
smoke-windows-arm:
|
|
runs-on: windows-11-arm
|
|
timeout-minutes: 240
|
|
continue-on-error: true
|
|
steps:
|
|
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
|
- uses: msys2/setup-msys2@66cd2cce69caa17b53920067426061ca1de3a884 # v2
|
|
with:
|
|
msystem: CLANGARM64
|
|
path-type: inherit
|
|
install: >-
|
|
mingw-w64-clang-aarch64-clang
|
|
mingw-w64-clang-aarch64-zlib
|
|
mingw-w64-clang-aarch64-python3
|
|
make
|
|
git
|
|
coreutils
|
|
- name: Build (prod binary)
|
|
shell: msys2 {0}
|
|
run: scripts/build.sh CC=clang CXX=clang++
|
|
- name: Smoke invariants
|
|
shell: msys2 {0}
|
|
run: |
|
|
chmod +x scripts/smoke-invariants.sh
|
|
BIN=build/c/codebase-memory-mcp
|
|
[ -f "${BIN}.exe" ] && BIN="${BIN}.exe"
|
|
scripts/smoke-invariants.sh "$BIN"
|