mirror of
https://github.com/DeusData/codebase-memory-mcp.git
synced 2026-11-04 10:48:20 +00:00
The hosted Ubuntu x64 runners read the archive through mirror+file:/etc/apt/apt-mirrors.txt. With Acquire::Retries above 0 (including the apt default of 3), a failover from a dead first entry of that list (connection refused, DNS failure or a stalled host) to the next entry goes idle: apt-get fetches a few InRelease files from the second mirror and then waits until the step timeout. With Acquire::Retries=0 the same failover completes. Seen on noble (apt 2.8.3) and jammy (apt 2.4.14). Every apt step this branch hardened now picks the retry count at runtime, applied to both update and install: 0 when the runner has the mirror list (moving to the next mirror is the retry), 3 otherwise (arm64 runners and any host with plain sources keep their retries). --error-on=any, the http and https timeouts and the step timeouts are unchanged. Proof: the step text extracted from the edited _build.yml (update plus install of zlib1g-dev), run under bash -e in ubuntu:24.04 and ubuntu:22.04 containers with runner-shaped mirror lists: - first mirror refused: exit 0 in 8 s / 9 s, every index and deb fetched from the second mirror - first mirror stalled (192.0.2.1): exit 0 in 68 s / 69 s, one 30 s timeout each for update and install, then the second mirror - healthy first mirror: exit 0 in 7 s / 9 s - no mirror list, plain sources: the prefix keeps Retries=3, exit 0 in 8 s / 7 s - every mirror dead: update exits 100 in under 1 s, install skipped - revert check, the previous step text with a dead first mirror (refused or stalled): idle with no Packages index at the 180 s cap on both releases Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
124 lines
4.7 KiB
YAML
124 lines
4.7 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')
|
|
timeout-minutes: 10
|
|
run: APT_RETRIES=3; [ -f /etc/apt/apt-mirrors.txt ] && APT_RETRIES=0; sudo apt-get -o Acquire::Retries=$APT_RETRIES -o Acquire::http::Timeout=30 -o Acquire::https::Timeout=30 --error-on=any update && sudo apt-get -o Acquire::Retries=$APT_RETRIES -o Acquire::http::Timeout=30 -o Acquire::https::Timeout=30 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"
|