name: Public source validation on: push: branches: [main] workflow_dispatch: permissions: contents: read concurrency: group: EventLens-Public-validation cancel-in-progress: true jobs: verify: runs-on: linux-validation timeout-minutes: 30 steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: persist-credentials: false - uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 with: python-version: "3.12" - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 with: node-version: 22 cache: npm cache-dependency-path: frontend/package-lock.json - name: Validate backend shell: bash run: | set -euo pipefail python3 -m pip install uv==0.10.0 cd backend python3 -m uv sync --locked --extra dev python3 -m uv run --locked --extra dev pytest -q -W error::DeprecationWarning python3 -m uv run --locked --extra dev ruff check . - name: Validate frontend shell: bash run: | set -euo pipefail cd frontend npm ci --no-audit --no-fund npm test npm run lint npm run build