07.11 — CI

07.11 — CI#

Three workflows: main_ci.yml (fast, lint + typecheck), dev_ci.yml (same for dev/feature/fix branches), e2e.yml (manual, Redis service + Firefox).

Overview#

WorkflowTriggerPlatformEffect
main_ci.ymlpush/PR mainubuntu + windows × py 3.14make check-coding-style (mypy + ruff). No browser.
dev_ci.ymlpush dev / feature/_ / fix/_ubuntu × py 3.14id., but Ubuntu only
e2e.ymlworkflow_dispatch (manual)ubuntu + Redis service + Firefox + geckodriverFull run of the e2e suite. Upload .screenshots/, .ocarina_logs/, .reports/.

main_ci.yml#

name: Main branch CI

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]
  workflow_dispatch:

defaults:
  run:
    shell: bash

jobs:
  test:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, windows-latest]
        python-version: ["3.14"]
    steps:
      - uses: actions/checkout@v6
      - uses: actions/setup-python@v6
        with: { python-version: "3.14" }
      - uses: actions/cache@v5
        with:
          path: .venv
          key: venv-${{ runner.os }}-py3.14-${{ hashFiles('pyproject.toml') }}
      - name: Install
        run: make install-on-ci
      - name: Check coding style
        run: |
          . .venv/bin/activate
          make check-coding-style
  1. OS matrix: ubuntu + windows — verifies Python portability.
  2. No browser: just make check-coding-style (mypy + ruff). Fast, no Selenium / Redis / OTP.
  3. .venv cache: reused between runs.

dev_ci.yml#

on:
  push:
    branches: [dev, "feature/**", "fix/**"]
  workflow_dispatch:

jobs:
  test:
    runs-on: ubuntu-latest
    # … identical to main_ci.yml, just Ubuntu only …

Identical to main_ci.yml but Ubuntu only (Windows only runs on main).