Skip to content

Add GitHub Actions CI for Backend (uv) + Webapp (Vite) #1050

@mariobehling

Description

@mariobehling

To prevent broken merges and ensure a reliable developer experience, we need CI that validates both the Python backend (using uv) and the Vue/Vite webapp build. This was discussed in the PR #1038 review but is independent and can be delivered separately.


🔧 Tasks

  • Add a workflow file at .github/workflows/webapp-backend-ci.yml that:

    • Runs on pull_request targeting enext

    • Triggers only when relevant paths change (backend, webapp, or tooling files)

    • Has two jobs:

      • python-uv-check: installs uv, syncs deps, runs Django checks
      • webapp-build: Node 20, npm ci, npm run build in the webapp dir
  • Ensure usable caching (npm cache keyed to package-lock.json)

  • Make the jobs required in the repo’s branch protection rules (handled by maintainers after merge)

  • Document a short “CI expectations” blurb in README.md (what the jobs do and how to reproduce locally)


📄 Proposed Workflow (copy as-is)

name: Webapp & Backend CI

on:
  pull_request:
    branches: [ enext ]
    paths:
      - "app/eventyay/webapp/**"
      - "app/**.py"
      - "app/**/**.py"
      - "app/pyproject.toml"
      - "app/uv.lock"
      - ".github/workflows/webapp-backend-ci.yml"

jobs:
  python-uv-check:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - uses: actions/setup-python@v5
        with:
          python-version: "3.11"

      - name: Install uv
        run: pip install uv

      - name: Sync dependencies
        run: uv sync --directory app

      - name: Django checks
        run: uv run python app/manage.py check

  webapp-build:
    runs-on: ubuntu-latest
    defaults:
      run:
        working-directory: app/eventyay/webapp
    steps:
      - uses: actions/checkout@v4

      - uses: actions/setup-node@v4
        with:
          node-version: "20"
          cache: "npm"
          cache-dependency-path: app/eventyay/webapp/package-lock.json

      - name: Install
        run: npm ci

      - name: Build
        run: npm run build

📚 README addition (short)

Add to README.md:

## CI (GitHub Actions)

Every PR to `enext` runs:
- **python-uv-check**: installs `uv`, syncs deps (`uv sync --directory app`), and runs `manage.py check`.
- **webapp-build**: Node 20, `npm ci`, `npm run build` in `app/eventyay/webapp`.

Reproduce locally:
```bash
pip install uv
uv sync --directory app
uv run python app/manage.py check

cd app/eventyay/webapp
npm ci
npm run build

### ✅ Acceptance Criteria

- Workflow file exists and runs on PRs to `enext`
- Backend job (uv) passes on a clean repo
- Webapp job (Vite build) passes on a clean repo
- CI status appears on PRs and blocks merge on failure
- README includes the brief CI section above

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions