mirror of
https://github.com/open-webui/open-webui.git
synced 2026-06-13 19:20:05 +00:00
64 lines
2.1 KiB
YAML
64 lines
2.1 KiB
YAML
# ─────────────────────────────────────────────────────────────────────────────
|
|
# Frontend CI — Lint, format check, build, and unit tests
|
|
# Runs on pushes and PRs to main/dev, skipping backend-only changes
|
|
# ─────────────────────────────────────────────────────────────────────────────
|
|
name: Frontend Build
|
|
|
|
on:
|
|
push:
|
|
branches: [main, dev]
|
|
paths-ignore: ['backend/**', 'pyproject.toml', 'uv.lock']
|
|
pull_request:
|
|
branches: [main, dev]
|
|
paths-ignore: ['backend/**', 'pyproject.toml', 'uv.lock']
|
|
|
|
concurrency:
|
|
group: frontend-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
# ── Format, i18n, and production build ────────────────────────────────────
|
|
format-and-build:
|
|
name: Format & Build
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 15
|
|
steps:
|
|
- uses: actions/checkout@v5
|
|
|
|
- uses: actions/setup-node@v5
|
|
with:
|
|
node-version: '22'
|
|
|
|
- name: Install dependencies
|
|
run: npm install --force
|
|
|
|
- name: Verify code formatting
|
|
run: npm run format
|
|
|
|
- name: Verify i18n strings
|
|
run: npm run i18n:parse
|
|
|
|
- name: Ensure working tree is clean
|
|
run: git diff --exit-code
|
|
|
|
- name: Production build
|
|
run: npm run build
|
|
|
|
# ── Vitest unit tests ────────────────────────────────────────────────────
|
|
unit-tests:
|
|
name: Unit Tests
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 10
|
|
steps:
|
|
- uses: actions/checkout@v5
|
|
|
|
- uses: actions/setup-node@v5
|
|
with:
|
|
node-version: '22'
|
|
|
|
- name: Install dependencies (frozen lockfile)
|
|
run: npm ci --force
|
|
|
|
- name: Execute test suite
|
|
run: npm run test:frontend
|