The spelling check job was passing even with spelling errors because
the system spell checker (`aspell`) was not installed on the GitHub
Actions runner. While `sphinxcontrib.spelling` and `PyEnchant` were
installed via pip, they require a system-level spell checker backend
to function.
We can continue to limit the coverage comment workflow to django/django,
but now that this workflow is the main python test workflow, it should
run on forks by default. The other tests workflow (currently running
only JavaScript tests) may start running python tests again once we flesh
out the matrix, but since it was duplicating the coverage tests configuration,
we temporarily removed it.
Follow-up to 26b0e2bb92.
Follow-up to a89183e638, which was
reverted in e4c4a178aa because a change
to the workflow trigger resulted in the PR branch not being checked out.
We used this opportunity to reimplement the coverage tracing and coverage
commenting in a two-workflow pattern with more granular permissions.
To reduce duplicative workflows, we removed the existing python test workflow
on PRs, at least until we run more distinct configurations on GitHub actions. The
run with coverage tracing enabled is sufficient for now. The existing workflow still
runs on pushes to main. We can revisit when adding more test configurations.
GitHub Actions defaults to a 360-minute (6-hour) timeout. We've had jobs
hang due to issues in the parallel test runner, causing them to run for
the full 6 hours. This wastes resources and negatively impacts CI
availability, so explicit timeouts have been added to prevent
long-running hangs.
This work allows to test three types of postgis Docker images to cover
a wider spectrum of geo libraries versions:
* `latest` (recommended upstream): uses latest stable Debian packages.
These versions are generally conservative, so they may lag behind.
* `alpine`: build PostGIS from source on Alpine, and ship newer
geospatial libs.
* `master`: provides development versions, therefore coverage for what's
coming. Future compatibility issues can be caught in advance.
This split is important because each image differs significantly in
GEOS/PROJ/GDAL versions, so testing all increases confidence in
compatibility. More info at https://hub.docker.com/r/postgis/postgis/.
For example, at the time of this branch:
* latest stable in debian:
* POSTGIS="3.5.2 dea6d0a"
* GEOS="3.9.0-CAPI-1.16.2"
* PROJ="7.2.1"
* latest stable in alpine:
* POSTGIS="3.5.3 0"
* GEOS="3.13.1-CAPI-1.19.2"
* PROJ="9.6.0
* latest development branch:
* POSTGIS="3.6.0dev 3.6.0beta1-29-g7c8cfe07d"
* GEOS="3.14.0beta2-CAPI-1.20.1"
* PROJ="9.7.0"
The `check` docs target now runs spelling, black, and lint, so all
current documentation quality checks can be run with a single command.
Also documented the lint-docs check's availability and usage.
The `pull_request` trigger runs in the context of the PR, and has
limited access to information stored in the base repo django/django.
As access is needed to the label "no ticket" in django/django, use the
`pull_request_target` trigger.