name: CI on: push: branches: [main, master] pull_request: branches: [main, master] jobs: lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: "3.11" cache: pip - name: Install dependencies run: pip install -e ".[dev]" - name: Ruff check run: ruff check . test-and-benchmark: runs-on: ubuntu-latest timeout-minutes: 20 needs: lint steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: "3.11" cache: pip - name: Install dependencies run: pip install -e ".[dev,ml]" - name: Unit tests run: pytest tests/ -q --tb=short - name: Import fixtures (openfootball) run: import-fixtures --competition brasileirao --seasons 2022 2023 2024 - name: Temporal benchmark (Brasileirão) run: benchmark-bolao-models --eval-season 2024 - name: Upload benchmark report if: always() uses: actions/upload-artifact@v4 with: name: brasileirao-benchmark-report path: data/lake/reports/brasileirao_benchmark_report.json if-no-files-found: ignore retention-days: 14 wc-model: runs-on: ubuntu-latest timeout-minutes: 25 steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: "3.11" cache: pip - name: Install dependencies run: pip install -e ".[dev,ml]" - name: WC unit tests run: pytest tests/test_wc_squad_features.py tests/test_wc_group_standings.py tests/test_national_team_entities.py tests/test_wc_news_features.py -q --tb=short - name: Import World Cup fixtures run: import-world-cup --missing-only - name: Walk-forward validation run: walkforward-wc-models --max-editions 6 --min-season 1990 - name: Upload WC walk-forward report if: always() uses: actions/upload-artifact@v4 with: name: wc-walkforward-report path: data/lake/reports/wc_walkforward_report.json if-no-files-found: ignore retention-days: 14