Skip to content

fix(windows+sim): pin v143 triplet/toolset and clean legacy sim schem… #15

fix(windows+sim): pin v143 triplet/toolset and clean legacy sim schem…

fix(windows+sim): pin v143 triplet/toolset and clean legacy sim schem… #15

Workflow file for this run

name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
concurrency:
group: provider-sim-ci-${{ github.ref }}
cancel-in-progress: true
env:
VCPKG_COMMIT: "66c0373dc7fca549e5803087b9487edfe3aca0a1"
jobs:
python-lint:
name: Python Linting (ruff)
runs-on: ubuntu-24.04
timeout-minutes: 10
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: Validate requirements lockfile
shell: bash
run: |
set -euo pipefail
LOCKFILE="requirements-lock.txt"
test -f "$LOCKFILE"
if od -An -tx1 "$LOCKFILE" | tr -s ' ' '\n' | grep -qx '00'; then
echo "ERROR: $LOCKFILE contains NUL bytes (binary corruption)" >&2
exit 1
fi
iconv -f UTF-8 -t UTF-8 "$LOCKFILE" > /dev/null 2>&1
echo "OK: $LOCKFILE is valid UTF-8 and contains no NUL bytes"
- name: Setup Python and dependencies
uses: actions/setup-python@v5
with:
python-version: "3.12"
cache: "pip"
cache-dependency-path: requirements-lock.txt
- name: Install Python dependencies
run: |
python -m pip install --upgrade pip
python -m pip install -r requirements-lock.txt
- name: Run ruff checks
run: |
ruff check tests examples --output-format=github
ruff format --check tests examples
python-typecheck:
name: Python Type Checking (mypy)
runs-on: ubuntu-24.04
timeout-minutes: 10
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: Validate requirements lockfile
shell: bash
run: |
set -euo pipefail
LOCKFILE="requirements-lock.txt"
test -f "$LOCKFILE"
if od -An -tx1 "$LOCKFILE" | tr -s ' ' '\n' | grep -qx '00'; then
echo "ERROR: $LOCKFILE contains NUL bytes (binary corruption)" >&2
exit 1
fi
iconv -f UTF-8 -t UTF-8 "$LOCKFILE" > /dev/null 2>&1
echo "OK: $LOCKFILE is valid UTF-8 and contains no NUL bytes"
- name: Setup Python and dependencies
uses: actions/setup-python@v5
with:
python-version: "3.12"
cache: "pip"
cache-dependency-path: requirements-lock.txt
- name: Install Python dependencies
run: |
python -m pip install --upgrade pip
python -m pip install -r requirements-lock.txt
- name: Run mypy
run: mypy tests examples
linux-release:
name: ${{ matrix.lane }}
runs-on: ubuntu-24.04
strategy:
fail-fast: false
matrix:
include:
- lane: Linux Release (FluxGraph OFF, strict)
configure_preset: ci-linux-release-strict
test_preset: ci-linux-release-strict
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: Install system dependencies
run: |
sudo apt-get update
sudo apt-get install -y ninja-build g++
- name: Validate requirements lockfile
shell: bash
run: |
set -euo pipefail
LOCKFILE="requirements-lock.txt"
test -f "$LOCKFILE"
if od -An -tx1 "$LOCKFILE" | tr -s ' ' '\n' | grep -qx '00'; then
echo "ERROR: $LOCKFILE contains NUL bytes (binary corruption)" >&2
exit 1
fi
iconv -f UTF-8 -t UTF-8 "$LOCKFILE" > /dev/null 2>&1
echo "OK: $LOCKFILE is valid UTF-8 and contains no NUL bytes"
- name: Setup Python and dependencies
uses: actions/setup-python@v5
with:
python-version: "3.12"
cache: "pip"
cache-dependency-path: requirements-lock.txt
- name: Install Python dependencies
run: |
python -m pip install --upgrade pip
python -m pip install -r requirements-lock.txt
- name: Setup vcpkg
uses: lukka/run-vcpkg@v11
with:
vcpkgGitCommitId: ${{ env.VCPKG_COMMIT }}
doNotCache: false
- name: Build
run: |
cmake --preset "${{ matrix.configure_preset }}"
cmake --build --preset "${{ matrix.configure_preset }}" --parallel
- name: Test (CTest provider baseline)
run: ctest --preset "${{ matrix.test_preset }}" -L provider
windows-release:
name: ${{ matrix.lane }}
runs-on: windows-2022
strategy:
fail-fast: false
matrix:
include:
- lane: Windows Release (FluxGraph OFF, strict)
configure_preset: ci-windows-release-strict
test_preset: ci-windows-release-strict
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: Validate requirements lockfile
shell: bash
run: |
set -euo pipefail
LOCKFILE="requirements-lock.txt"
test -f "$LOCKFILE"
if od -An -tx1 "$LOCKFILE" | tr -s ' ' '\n' | grep -qx '00'; then
echo "ERROR: $LOCKFILE contains NUL bytes (binary corruption)" >&2
exit 1
fi
iconv -f UTF-8 -t UTF-8 "$LOCKFILE" > /dev/null 2>&1
echo "OK: $LOCKFILE is valid UTF-8 and contains no NUL bytes"
- name: Setup Python and dependencies
uses: actions/setup-python@v5
with:
python-version: "3.12"
cache: "pip"
cache-dependency-path: requirements-lock.txt
- name: Install Python dependencies
shell: pwsh
run: |
python -m pip install --upgrade pip
python -m pip install -r requirements-lock.txt
- name: Setup vcpkg
uses: lukka/run-vcpkg@v11
with:
vcpkgGitCommitId: ${{ env.VCPKG_COMMIT }}
doNotCache: false
- name: Build
shell: pwsh
run: |
cmake --preset "${{ matrix.configure_preset }}"
cmake --build --preset "${{ matrix.configure_preset }}" --parallel
- name: Test (CTest provider baseline)
shell: pwsh
run: ctest --preset "${{ matrix.test_preset }}" -L provider
windows-fluxgraph-build:
name: Windows Release (FluxGraph ON, strict build)
runs-on: windows-2022
steps:
- name: Checkout provider-sim
uses: actions/checkout@v4
with:
submodules: recursive
- name: Resolve FluxGraph pin
id: pins
shell: bash
run: |
set -euo pipefail
FLUXGRAPH_REPO=$(awk '/^fluxgraph:/{f=1; next} f && /repository:/{print $2; exit}' .ci/dependency-pins.yml)
FLUXGRAPH_REF=$(awk '/^fluxgraph:/{f=1; next} f && /ref:/{print $2; exit}' .ci/dependency-pins.yml)
if [ -z "$FLUXGRAPH_REPO" ] || [ -z "$FLUXGRAPH_REF" ]; then
echo "Failed to resolve FluxGraph pin from .ci/dependency-pins.yml" >&2
exit 1
fi
echo "repo=$FLUXGRAPH_REPO" >> "$GITHUB_OUTPUT"
echo "ref=$FLUXGRAPH_REF" >> "$GITHUB_OUTPUT"
echo "Using FluxGraph pin: $FLUXGRAPH_REPO@$FLUXGRAPH_REF"
- name: Checkout FluxGraph
uses: actions/checkout@v4
with:
repository: ${{ steps.pins.outputs.repo }}
ref: ${{ steps.pins.outputs.ref }}
path: fluxgraph
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Setup vcpkg
uses: lukka/run-vcpkg@v11
with:
vcpkgGitCommitId: ${{ env.VCPKG_COMMIT }}
doNotCache: false
- name: Build provider-sim (FluxGraph ON)
shell: pwsh
run: |
cmake --preset "ci-windows-release-fluxgraph-strict" -DFLUXGRAPH_DIR="$env:GITHUB_WORKSPACE/fluxgraph"
cmake --build --preset "ci-windows-release-fluxgraph-strict" --parallel
linux-fluxgraph:
name: ${{ matrix.lane }}
runs-on: ubuntu-24.04
strategy:
fail-fast: false
matrix:
include:
- lane: Linux Release (FluxGraph ON, strict)
configure_preset: ci-linux-release-fluxgraph-strict
test_preset: ci-linux-release-fluxgraph-strict
steps:
- name: Checkout provider-sim
uses: actions/checkout@v4
with:
submodules: recursive
- name: Resolve FluxGraph pin
id: pins
run: |
set -euo pipefail
FLUXGRAPH_REPO=$(awk '/^fluxgraph:/{f=1; next} f && /repository:/{print $2; exit}' .ci/dependency-pins.yml)
FLUXGRAPH_REF=$(awk '/^fluxgraph:/{f=1; next} f && /ref:/{print $2; exit}' .ci/dependency-pins.yml)
if [ -z "$FLUXGRAPH_REPO" ] || [ -z "$FLUXGRAPH_REF" ]; then
echo "Failed to resolve FluxGraph pin from .ci/dependency-pins.yml" >&2
exit 1
fi
echo "repo=$FLUXGRAPH_REPO" >> "$GITHUB_OUTPUT"
echo "ref=$FLUXGRAPH_REF" >> "$GITHUB_OUTPUT"
echo "Using FluxGraph pin: $FLUXGRAPH_REPO@$FLUXGRAPH_REF"
- name: Checkout FluxGraph
uses: actions/checkout@v4
with:
repository: ${{ steps.pins.outputs.repo }}
ref: ${{ steps.pins.outputs.ref }}
path: fluxgraph
- name: Install system dependencies
run: |
sudo apt-get update
sudo apt-get install -y ninja-build g++
- name: Validate requirements lockfile
shell: bash
run: |
set -euo pipefail
LOCKFILE="requirements-lock.txt"
test -f "$LOCKFILE"
if od -An -tx1 "$LOCKFILE" | tr -s ' ' '\n' | grep -qx '00'; then
echo "ERROR: $LOCKFILE contains NUL bytes (binary corruption)" >&2
exit 1
fi
iconv -f UTF-8 -t UTF-8 "$LOCKFILE" > /dev/null 2>&1
echo "OK: $LOCKFILE is valid UTF-8 and contains no NUL bytes"
- name: Setup Python and dependencies
uses: actions/setup-python@v5
with:
python-version: "3.12"
cache: "pip"
cache-dependency-path: requirements-lock.txt
- name: Install Python dependencies
run: |
python -m pip install --upgrade pip
python -m pip install -r requirements-lock.txt
- name: Setup vcpkg
uses: lukka/run-vcpkg@v11
with:
vcpkgGitCommitId: ${{ env.VCPKG_COMMIT }}
doNotCache: false
- name: Build FluxGraph server
working-directory: fluxgraph
run: |
cmake --preset ci-linux-release-server
cmake --build --preset ci-linux-release-server --parallel
- name: Build provider-sim (FluxGraph ON)
run: |
cmake --preset "${{ matrix.configure_preset }}" -DFLUXGRAPH_DIR="$GITHUB_WORKSPACE/fluxgraph"
cmake --build --preset "${{ matrix.configure_preset }}" --parallel
- name: Test FluxGraph suites
run: |
SERVER_BIN="$(find "$GITHUB_WORKSPACE/fluxgraph/build-server" -type f -name fluxgraph-server | head -n 1)"
if [ -z "$SERVER_BIN" ]; then
echo "ERROR: fluxgraph-server binary not found under $GITHUB_WORKSPACE/fluxgraph/build-server" >&2
exit 1
fi
FLUXGRAPH_SERVER_EXE="$SERVER_BIN" ctest --preset "${{ matrix.test_preset }}" -L fluxgraph