Corp/tools/quality/README.md
2026-09-07 18:37:34 +03:00

43 lines
1.3 KiB
Markdown

# Local quality gates
The checks run entirely on the development computer. GitHub and Gitea are not
contacted, except by the `git push` that starts the `pre-push` hook.
## Setup
Install the project dependencies, then enable the versioned hooks for this
checkout:
```bash
cd backend
python -m pip install -r requirements-ci.txt
cd ../frontend
npm ci
cd ..
./tools/quality/install-hooks.sh
```
Each clone or independently configured worktree needs the one-time activation
command. Merely receiving `.githooks` through a mirror does not activate them.
## Commands
```bash
./tools/quality/quality.sh quick
./tools/quality/quality.sh test
./tools/quality/quality.sh release
```
- `quick` checks formatting, lint, Django configuration and missing migrations.
- `test` also runs both test suites, the production frontend build and all
migrations on a fresh temporary PostgreSQL database.
- `release` first requires the complete repository to pass Ruff, ESLint and
Prettier, then runs everything from `test`.
`pre-commit` runs `quick --staged`. It refuses partially staged files so the
checked content is exactly the content being committed. `pre-push` chooses
`test` for `develop`, `release` for `master`, and `quick` for other branches.
PostgreSQL validation requires Docker with the `postgres:17-alpine` image. The
temporary container is removed after the check.