name: ci on: { pull_request: {}, push: { branches: [main] } } jobs: backend: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: astral-sh/setup-uv@v3 - run: cd backend && uv venv --python 3.12 .venv && uv pip install --python .venv/bin/python -e ".[dev]" - run: cd backend && .venv/bin/ruff check app scripts tests && .venv/bin/pytest -q frontend: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: { node-version: 22, cache: npm, cache-dependency-path: frontend/package-lock.json } - run: cd frontend && npm ci && npm run build images: needs: [backend, frontend] runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - run: docker build -f backend/Dockerfile -t uqo-chat-api . && docker build -t uqo-chat-sandbox sandbox-runner - uses: aquasecurity/trivy-action@master with: { image-ref: uqo-chat-api, severity: "CRITICAL,HIGH", exit-code: "0" }