Testing, CI & Docker
Proving a GIS workflow still works, and shipping it somewhere reproducible.
Everything on Spatial Workflow about testing, ci & docker, in the order that usually works: understand the idea, then run the task, then fix it when it goes wrong. 19 guides in total.
4 learning paths run through this topic — follow one if you would rather work through a route than pick a single guide.
🧭 Start with the concepts
The ideas the how-to guides below assume you already have.
- How to Make a GIS Workflow Reproducible in Python reproducible gis workflow python
- What to Test in a GIS Pipeline (and What You Cannot) what to test gis pipeline
- Test Fixtures for GIS Code: Building Spatial Test Data You Can Trust gis test fixtures python
- Reproducible GIS Environments Explained: conda, pip, Lockfiles and Docker reproducible gis environment python
⚙️ Then do the task
Step-by-step walkthroughs with code you can copy and adapt.
- How to Containerise a Python GIS Pipeline with Docker docker python gis pipeline
- How to Test a GIS Pipeline with pytest test gis pipeline pytest
- How to Run a Python GIS Pipeline in CI with GitHub Actions github actions python gis pipeline
- How to Assert on Geometry in pytest Without Flaky Comparisons pytest assert geometry equal
- How to Test a GIS Script That Reads and Writes Files test gis file io pytest
- How to Build a Small, Fast Python GIS Docker Image small python gis docker image
- How to Test a Spatial API with pytest and httpx test spatial api pytest
- How to Deploy a Python Map App with Docker deploy streamlit app docker
- How to Test a Map App Without a Browser test streamlit map app
- How to checksum spatial datasets so you can prove they match checksum spatial dataset python
🔧 When it breaks
The errors this topic produces, with the cause explained rather than just the command.
- GIS Tests Pass Locally but Fail in CI: How to Fix It gis tests fail in ci
- pytest Cannot Import My GIS Modules: How to Fix It pytest modulenotfounderror src
- Batch Job Gives Different Results Each Run: How to Fix It gis batch non deterministic output
- GDAL and GeoPandas Fail Inside Docker: How to Fix the Build geopandas gdal docker build fails
- GIS Tests Run Out of Memory or Time Out in CI: How to Fix It ci out of memory gis tests
Learning paths through this topic
A curated route rather than a list — the guides in the order that builds on itself.
-
Automation & Pipelines
Build repeatable, config-driven GIS pipelines.
Open path → -
Serving Spatial Data
The dataset is finished. Now other people need it over HTTP.
Open path → -
Maps, Apps & Dashboards
Let the reader ask their own question — within a budget.
Open path → -
Metadata, Licensing & Provenance
A layer nobody can describe, cite or re-run is a layer nobody should use.
Open path →
Related topics
Subjects that keep coming up alongside this one, most overlap first.