FlowDeck CI / lint (push) Successful in 43s
FlowDeck CI / test (push) Successful in 4m2s
FlowDeck CI / lint (pull_request) Successful in 42s
FlowDeck CI / test (pull_request) Successful in 4m3s
FlowDeck CI / docker (push) Successful in 1m2s
FlowDeck CI / docker (pull_request) Successful in 35s
tests/conftest.py: mutate the settings singleton (instead of rebinding) so DB + backup dir are isolated per test -> pytest-xdist safe. Real backup tests (snapshot/prune/admin API) and OAuth mock tests (Gitea/GitHub/link) replace the previous skips. init_db() now also creates webhook_subscriptions (full schema without the FastAPI lifespan). ruff check is clean; .eslintrc.json migrated to eslint.config.mjs (flat config). CI: lint job (ruff + eslint), parallel tests (-n auto), run on every branch push. VERSION 5.11.1.
65 lines
2.2 KiB
YAML
65 lines
2.2 KiB
YAML
name: FlowDeck CI
|
|
|
|
on:
|
|
# Run on every pushed branch so feature branches are validated before the PR.
|
|
push:
|
|
pull_request:
|
|
branches: [main, develop]
|
|
|
|
jobs:
|
|
lint:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: actions/setup-python@v5
|
|
with:
|
|
python-version: '3.12'
|
|
- name: Install lint tools
|
|
run: pip install -r requirements-dev.txt
|
|
- name: Ruff (Python)
|
|
run: ruff check app tests
|
|
- name: ESLint (JavaScript)
|
|
run: npx --yes eslint static/js
|
|
|
|
test:
|
|
runs-on: ubuntu-latest
|
|
# NOTE: no `container:` here. A `python:*-slim` image ships no Node.js, so the
|
|
# JavaScript `actions/checkout` action could not run and every job failed at
|
|
# the first step. The runner's default image already provides Node; we install
|
|
# the Python toolchain explicitly with actions/setup-python.
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: actions/setup-python@v5
|
|
with:
|
|
python-version: '3.12'
|
|
- name: Install system dependencies (WeasyPrint / emoji fonts)
|
|
run: |-
|
|
SUDO=""
|
|
if command -v sudo >/dev/null 2>&1; then SUDO="sudo"; fi
|
|
$SUDO apt-get update
|
|
$SUDO apt-get install -y --no-install-recommends \
|
|
libpango-1.0-0 libpangoft2-1.0-0 libharfbuzz0b libffi-dev \
|
|
libjpeg-dev libopenjp2-7 libcairo2 fonts-noto-color-emoji
|
|
- name: Install Python dependencies
|
|
run: pip install -r requirements-dev.txt pytest-cov
|
|
- name: Run tests (parallel) with coverage
|
|
env:
|
|
GITEA_URL: https://git.dracodev.net
|
|
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
|
|
APP_SECRET_KEY: ci-test-key
|
|
# `-n auto` needs pytest-xdist, provided by requirements-dev.txt.
|
|
run: python -m pytest tests/ -v --tb=short -n auto --cov=app --cov-report=term
|
|
- name: Coverage summary
|
|
if: always()
|
|
run: coverage report -m || true
|
|
|
|
docker:
|
|
runs-on: ubuntu-latest
|
|
needs: test
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Build Docker image
|
|
run: docker build -t flowdeck .
|
|
- name: Verify image
|
|
run: docker run --rm flowdeck python -c "from app.main import app; print('OK')"
|