Summary
None of the three Publish Docker* workflows have succeeded since April. opendronemap/nodeodm:gpu has therefore not been rebuilt since 2025-10-22, while its own base image opendronemap/odm:gpu was rebuilt 2026-08-04. Users pulling the current tag get a ~10-month-old image, and on it GPU SIFT cannot work at all — silently, with no error in the task log.
CI status
| Workflow |
File |
Last success |
Latest runs |
| Publish Docker |
.github/workflows/publish-docker.yaml |
2026-03-25 |
failure 2026-04-30, 2026-04-28 |
| Publish Docker GPU |
.github/workflows/publish-docker-gpu.yaml |
(before 2026-03-13) |
failure 2026-04-30, 04-28, 03-25, 03-17, 03-17, 03-13 |
| Publish Docker Intel GPU |
.github/workflows/publish-docker-gpu-intel.yaml |
2026-03-17 |
failure 2026-04-30, 2026-04-28 |
Two distinct failure modes on the GPU workflow:
- 2026-03-13 → 2026-03-25 — failed at step
Build and push Docker image (includes two manual workflow_dispatch retries)
- 2026-04-28, 2026-04-30 — failed at step
Login to DockerHub, which looks like expired/missing Docker Hub credentials
There have been no workflow runs at all since 2026-04-30.
Docker Hub tag dates confirm the freeze:
| tag |
last_updated |
opendronemap/odm:gpu (base image) |
2026-08-04 |
opendronemap/nodeodm:latest / master |
2026-03-25 |
opendronemap/nodeodm:gpu.intel |
2026-03-17 |
opendronemap/nodeodm:gpu |
2025-10-22 |
The last successful gpu publish was the hotfix for #252. Since then every attempt has failed. #174 raised a related rebuild-cadence problem.
Impact: GPU SIFT is silently disabled in the published image
In the current opendronemap/nodeodm:gpu (sha256:214fe6a4421fe5283648400e9ce455457bb866c87a20a325fddfd494e4ad482a), the CUDA 11 runtime is missing, so opensfm's pypopsift can never load:
$ ls -la /usr/local/cuda-11.8/targets/x86_64-linux/lib/ | grep cudart
lrwxrwxrwx 1 root root 17 Sep 21 2022 libcudart.so -> libcudart.so.11.0 # dangling
-rw-r--r-- 1 root root 1198880 Sep 21 2022 libcudart_static.a
$ ldd /code/SuperBuild/install/bin/opensfm/opensfm/pypopsift.cpython-38-x86_64-linux-gnu.so | grep cuda
libcudart.so.11.0 => not found
$ dpkg -l | grep -i cuda | awk '{print $2, $3}'
cuda-toolkit-11-8-config-common 11.8.89-1
cuda-toolkit-11-config-common 11.8.89-1
cuda-toolkit-config-common 12.3.52-1
libcufile-11-8 1.4.0.31-1
libcusolver-11-8 11.4.1.48-1
libnccl2 2.16.2-1+cuda11.8
# no cuda-cudart package at all
Result, from inside the running container:
$ docker exec -w /code webodm-node-odm-1 python3 -c \
"from opendm.gpu import get_cuda_compute_version, has_popsift_and_can_handle_texsize as f; \
print(get_cuda_compute_version(0)); print(f(4032,3024))"
(8, 9)
[WARNING] libcudart.so.11.0: cannot open shared object file: No such file or directory
False
has_popsift_and_can_handle_texsize() swallows this as a warning, so opendm/osfm.py quietly falls back to CPU feature extraction. Nothing in the task log indicates a problem — the job simply runs several times slower. Searching the org for libcudart returns 0 issues, which I suspect is because the failure is invisible rather than because it is rare.
This appears to be collateral from the fix for the CUDA 11.2 conflict discussed in
https://community.opendronemap.org/t/opendronemap-nodeodm-gpu-nvidia-smi-detected-cannot-initialize-cuda/21124
— cuda-cudart-11-2 was removed and nothing installed cuda-cudart-11-8 in its place. A rebuild
on the current opendronemap/odm:gpu (CUDA 12.9 / Ubuntu 24.04) should resolve it, together with
ODM PR #2060 ("Restore DEPENDS opensfm for PyPopsift GPU module install order", merged 2026-08-04).
Minor, related
Dockerfile.gpu on master still contains:
RUN echo /usr/local/cuda-11.2/compat >> /etc/ld.so.conf.d/989_cuda-11.conf && ldconfig
/usr/local/cuda-11.2/compat does not exist in the built image — it leaves a dangling entry in
/etc/ld.so.conf.d/. Probably obsolete now that the base is on CUDA 12.9.
Suggested actions
- Refresh the Docker Hub credentials used by the
Publish Docker* workflows.
- Re-run
publish-docker-gpu.yaml and confirm the March Build and push Docker image failure is resolved by the newer opendronemap/odm:gpu base.
- Consider a scheduled rebuild, or a trigger on base-image updates, so
nodeodm:gpu cannot drift ~10 months behind odm:gpu again.
- Drop the
cuda-11.2/compat line from Dockerfile.gpu.
Environment
- Host: Ubuntu, NVIDIA RTX 4060 Ti 16 GB, driver 580.173.02 (CUDA 13.0), compute capability 8.9
- WebODM 3.0.1,
opendronemap/nodeodm:gpu @ sha256:214fe6a4… (ODM 3.5.6)
nvidia-container-toolkit 1.19.1; GPU is correctly passed into the container (nvidia-smi works inside, OpenMVS densification does use CUDA)
Summary
None of the three
Publish Docker*workflows have succeeded since April.opendronemap/nodeodm:gpuhas therefore not been rebuilt since 2025-10-22, while its own base imageopendronemap/odm:gpuwas rebuilt 2026-08-04. Users pulling the current tag get a ~10-month-old image, and on it GPU SIFT cannot work at all — silently, with no error in the task log.CI status
.github/workflows/publish-docker.yaml.github/workflows/publish-docker-gpu.yaml.github/workflows/publish-docker-gpu-intel.yamlTwo distinct failure modes on the GPU workflow:
Build and push Docker image(includes two manualworkflow_dispatchretries)Login to DockerHub, which looks like expired/missing Docker Hub credentialsThere have been no workflow runs at all since 2026-04-30.
Docker Hub tag dates confirm the freeze:
opendronemap/odm:gpu(base image)opendronemap/nodeodm:latest/masteropendronemap/nodeodm:gpu.intelopendronemap/nodeodm:gpuThe last successful
gpupublish was the hotfix for #252. Since then every attempt has failed. #174 raised a related rebuild-cadence problem.Impact: GPU SIFT is silently disabled in the published image
In the current
opendronemap/nodeodm:gpu(sha256:214fe6a4421fe5283648400e9ce455457bb866c87a20a325fddfd494e4ad482a), the CUDA 11 runtime is missing, soopensfm'spypopsiftcan never load:Result, from inside the running container:
has_popsift_and_can_handle_texsize()swallows this as a warning, soopendm/osfm.pyquietly falls back to CPU feature extraction. Nothing in the task log indicates a problem — the job simply runs several times slower. Searching the org forlibcudartreturns 0 issues, which I suspect is because the failure is invisible rather than because it is rare.This appears to be collateral from the fix for the CUDA 11.2 conflict discussed in
https://community.opendronemap.org/t/opendronemap-nodeodm-gpu-nvidia-smi-detected-cannot-initialize-cuda/21124
—
cuda-cudart-11-2was removed and nothing installedcuda-cudart-11-8in its place. A rebuildon the current
opendronemap/odm:gpu(CUDA 12.9 / Ubuntu 24.04) should resolve it, together withODM PR #2060 ("Restore DEPENDS opensfm for PyPopsift GPU module install order", merged 2026-08-04).
Minor, related
Dockerfile.gpuon master still contains:RUN echo /usr/local/cuda-11.2/compat >> /etc/ld.so.conf.d/989_cuda-11.conf && ldconfig/usr/local/cuda-11.2/compatdoes not exist in the built image — it leaves a dangling entry in/etc/ld.so.conf.d/. Probably obsolete now that the base is on CUDA 12.9.Suggested actions
Publish Docker*workflows.publish-docker-gpu.yamland confirm the MarchBuild and push Docker imagefailure is resolved by the neweropendronemap/odm:gpubase.nodeodm:gpucannot drift ~10 months behindodm:gpuagain.cuda-11.2/compatline fromDockerfile.gpu.Environment
opendronemap/nodeodm:gpu@sha256:214fe6a4…(ODM 3.5.6)nvidia-container-toolkit1.19.1; GPU is correctly passed into the container (nvidia-smiworks inside, OpenMVS densification does use CUDA)