43 lines
1.3 KiB
Markdown
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.
|