ci(smoke): drop macOS from matrix — dashboard subprocess times out on… #47
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 |