mirror of
https://github.com/DeusData/codebase-memory-mcp.git
synced 2026-11-06 17:49:47 +00:00
GitHub retires the macos-14 runner image on 2026-11-02, and its brownouts already cancel our macos-14 jobs. Move every macos-14 runner reference to macos-15 (arm64): the release darwin-arm64 build, the unix-macos14 and tsan-mac test legs, the smoke-mac PR leg (its two matrix.os guards move in lockstep), the release smoke, both soak legs, the memwaste event lane, the bug-repro board, the cache warmer and the all-platform smoke. Lane names stay unchanged: select-lanes.sh, ci-ok and the lane contracts key on them, never on the runner label. Two broad legs already ran on macos-15 (_test.yml BROAD_UNIX, _smoke.yml BROAD_UNIX) and smoke.yml listed both images, so the moved legs would have duplicated them. Those duplicates are dropped; PR CI keeps exactly the same legs. Without an explicit minimum, clang stamps the binary with the SDK's default (LC_BUILD_VERSION minos), so a release built on macos-15 would refuse to start on macOS 14. Makefile.cbm now folds -mmacosx-version-min=14.0 into CC/CXX next to ARCHFLAGS for Apple targets (detected from the compiler's target, not the host), so it reaches every compile and link, vendored objects included, on every build path. Proof on macOS 26.6 / SDK 26.5: the production binary built from origin/main reports minos 26.0; with this change it reports minos 14.0, with zero warnings under -Werror, no weak imports and an identical undefined-symbol set. The test runner (direct make, no env.sh) is minos 14.0 too; platform and daemon_ipc suites pass. Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
123 lines
4.4 KiB
YAML
123 lines
4.4 KiB
YAML
# Smoke invariants across the WIDEST set of GitHub-hosted runners. Builds the
|
|
# production source path with explicit fault-injection test seams and runs
|
|
# scripts/smoke-invariants.sh
|
|
# (version/help, MCP initialize handshake [#513], all registered 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-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@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
- 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 (production path with explicit test seams)
|
|
run: scripts/build.sh CC=${{ matrix.cc }} CXX=${{ matrix.cxx }} TEST_SEAMS=1
|
|
- 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@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
- 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 (production path with explicit test seams)
|
|
shell: msys2 {0}
|
|
run: scripts/build.sh CC=clang CXX=clang++ TEST_SEAMS=1
|
|
- 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@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
- 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 (production path with explicit test seams)
|
|
shell: msys2 {0}
|
|
run: scripts/build.sh CC=clang CXX=clang++ TEST_SEAMS=1
|
|
- 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"
|