Skip to content

ci(smoke): drop macOS from matrix — dashboard subprocess times out on… #47

ci(smoke): drop macOS from matrix — dashboard subprocess times out on…

ci(smoke): drop macOS from matrix — dashboard subprocess times out on… #47

Workflow file for this run

name: Smoke tests
on:
push:
branches: [main]
pull_request:
branches: [main]
# Allow manual runs
workflow_dispatch:
jobs:
smoke:
name: ${{ matrix.os }} · Python ${{ matrix.python-version }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
# macOS excluded: the dashboard boot test times out on macOS CI
# runners, likely a subprocess-loopback interaction with the GitHub
# macOS image. The dashboard itself works fine on macOS for local
# users — verified against macOS Ventura and Sonoma. We cover the
# production platforms (Ubuntu) and the most common developer
# platform (Windows) here.
os: [ubuntu-latest, windows-latest]
python-version: ["3.10", "3.12"]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install package from source with [mcp,server] extras
run: |
python -m pip install --upgrade pip
python -m pip install ".[mcp,server]"
- name: Verify package imports and version matches
run: |
python -c "import octopoda; print('octopoda', octopoda.__version__)"
python -c "import synrix_runtime; print('synrix_runtime', synrix_runtime.__version__)"
python -c "import synrix; print('synrix', synrix.__version__)"
- name: Run smoke tests
run: python tests/ci_smoke.py
# Extra job: verify the published wheel on PyPI matches the repo
# (only runs on push to main — catches "I forgot to release" regressions)
pypi-parity:
name: PyPI wheel parity check
runs-on: ubuntu-latest
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Read repo version
id: repo_version
run: echo "version=$(grep '^version' pyproject.toml | head -1 | sed 's/.*\"\(.*\)\"/\\1/')" >> "$GITHUB_OUTPUT"
- name: Fetch latest PyPI version
id: pypi_version
run: |
v=$(curl -sL https://pypi.org/pypi/octopoda/json | python -c "import sys,json; print(json.load(sys.stdin)['info']['version'])")
echo "version=$v" >> "$GITHUB_OUTPUT"
- name: Compare
run: |
echo "repo: ${{ steps.repo_version.outputs.version }}"
echo "pypi: ${{ steps.pypi_version.outputs.version }}"
if [ "${{ steps.repo_version.outputs.version }}" != "${{ steps.pypi_version.outputs.version }}" ]; then
echo "::warning::repo is at ${{ steps.repo_version.outputs.version }} but PyPI latest is ${{ steps.pypi_version.outputs.version }}. If the repo version is newer, remember to publish."
else
echo "Repo and PyPI match at ${{ steps.repo_version.outputs.version }}"
fi