The Jenkins continuous integration environment at https://djangoci.com builds pull requests using the [https://wiki.jenkins-ci.org/display/JENKINS/GitHub+Integration+Plugin GitHub Integration Plugin]. == Commands == The main pull request builders are: * [https://djangoci.com/job/pull-requests-focal/ pull-requests-focal] (Ubuntu 20.04) runs PostgreSQL 14 (with `psycopg`) and MySQL 8. GIS: spatialite 4.3.0a-6, GDAL 3.0.4, GEOS 3.8.0, PROJ 6.3.1, PostGIS 3.4. * [https://djangoci.com/job/pr-mariadb/ pr-mariadb] (Ubuntu 20.04) runs MariaDB 10.5.27. GIS: GDAL 3.0.4, GEOS 3.8.0, PROJ 6.3.1. * [https://djangoci.com/job/pull-requests-postgresql-psycopg2/ pull-requests-postgresql-psycopg2] (Ubuntu 20.04) runs PostgreSQL 14 with `psycopg2`. GIS: GDAL 3.0.4, GEOS 3.8.0, PROJ 6.3.1, PostGIS 3.4. * [https://djangoci.com/job/pull-requests-pg-server-side-binding/ pull-requests-pg-server-side-binding] (Ubuntu 20.04) runs PostgreSQL 14 with `psycopg` and server-side binding cursors. GIS: GDAL 3.0.4, GEOS 3.8.0, PROJ 6.3.1, PostGIS 3.4. Other pull request builders which can be triggered manually with the corresponding comment phrases: * [https://djangoci.com/job/pull-requests-oracle/ pull-requests-oracle] runs on Oracle 19.3.0.0.0. The Oracle tests take about 40 minutes, so we avoid them unless we suspect a change may have broken something on Oracle. * `buildbot, test on oracle.` * Retired: * Ubuntu 12.04 runs PostgreSQL 9.1 and MySQL 5.5. GIS: spatialite 3.0.0~beta, GDAL 1.7.3, GEOS 3.2.2, PostGIS 1.5.3 * Ubuntu 14.04 runs PostgreSQL 9.3 and MySQL 5.6. GIS: spatialite 4.1.1, GDAL 1.10.1, GEOS 3.4.2, PostGIS 2.1 * Ubuntu 16.04 runs PostgreSQL 9.5 and MySQL 5.7. GIS: spatialite 4.3.0a-5, GDAL 1.11.3, GEOS 3.5.0, PostGIS 2.2 * Ubuntu 18.04 runs PostgreSQL 12, MySQL 5.7 and MariaDB 10.4.25. GIS: spatialite 4.3.0a-5, GDAL 2.2.3, GEOS 3.6.2, == GitHub actions == Some other builders run on all pull requests via GitHub actions: * `black` - runs `black` from the root checkout directory and fails if there are any warnings. * `flake8` - runs `flake8` from the root checkout directory and fails if there are any warnings. * `docs` - runs `make spelling` from the `docs/` directory and fails if there are any spelling or sphinx errors. * `isort` - runs `isort --check --diff .` from the root checkout directory and fails if any imports aren't [https://docs.djangoproject.com/en/dev/internals/contributing/writing-code/coding-style/#imports sorted properly]. * `JavaScript tests` - runs [https://docs.djangoproject.com/en/dev/internals/contributing/writing-code/javascript/#testing-from-the-command-line npm test] and fails if there are any errors * `Windows tests` - runs with Python 3.12.x. * `Selenium tests` - runs the Selenium tests for any PR with the `selenium` label applied. * `Benchmark` - Runs the [https://github.com/django/django-asv django-asv] benchmarks for any PR with the `benchmark` label applied. (The Benchmarks take some time, and will run on each subsequent push, but can be disabled by removing the label until you're ready to run them again.) == Troubleshooting == Q: The build result disappeared. How do I get it back? A: Build results are kept for a few days. Repush to your branch if you need to run the build again. Q: The build failed with "ModuleNotFoundError: No module named 'memcache'" A: The Python dependencies probably failed to install from PyPI. There's an issue where PyPI sometimes [https://github.com/pypa/pip/issues/5345 fails to return a correct response]. Q: Why is the disk nearly full on the Jenkins master node? A: `/var/log/jenkins/jenkins.log` may be many gigabytes in size. Remove that file and restart Jenkins with `service jenkins restart`.