Work around tox-docker KeyError on Docker 29+#3045
Merged
jonathangreen merged 1 commit intomainfrom Feb 12, 2026
Merged
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #3045 +/- ##
=======================================
Coverage 93.04% 93.04%
=======================================
Files 480 480
Lines 43712 43712
Branches 6028 6028
=======================================
Hits 40670 40670
Misses 1972 1972
Partials 1070 1070 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
2 tasks
dbernstein
approved these changes
Feb 12, 2026
jonathangreen
added a commit
to ThePalaceProject/virtual-library-card
that referenced
this pull request
Feb 12, 2026
## Description Added `TOX_DOCKER_GATEWAY` environment variable to the test workflow to work around a `KeyError: 'Gateway'` failure in tox-docker when running on Docker 29+. Docker 29 [removed the deprecated top-level `NetworkSettings.Gateway` key](https://docs.docker.com/engine/release-notes/29/) from the container inspect API. tox-docker 5.0.0 relies on this key and crashes with a `KeyError`. Setting `TOX_DOCKER_GATEWAY=0.0.0.0` bypasses the broken lookup entirely. This became flaky starting Feb 12 as the [Docker 29 rollout](actions/runner-images#13474) to GitHub Actions runners progresses. Once complete, tests will fail 100% of the time without this fix. This workaround can be removed once [tox-docker merges the fix](tox-dev/tox-docker#196). Mirrors the fix applied in [circulation#3045](ThePalaceProject/circulation#3045) and [library-registry#862](ThePalaceProject/library-registry#862). ## Motivation and Context CI test runs are failing intermittently with: ``` tox_docker/plugin.py, line 53, in get_gateway_ip ip = container.attrs["NetworkSettings"]["Gateway"] or "0.0.0.0" KeyError: 'Gateway' ``` ## How Has This Been Tested? - CI will validate that tests pass with the workaround on Docker 29+ runners ## Checklist - [x] I have updated the documentation accordingly. - [x] All new and existing tests passed.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Added
TOX_DOCKER_GATEWAYenvironment variable to the test workflow to work around aKeyError: 'Gateway'failure in tox-docker when running on Docker 29+.Docker 29 removed the deprecated top-level
NetworkSettings.Gatewaykey from the container inspect API. tox-docker 5.0.0 relies on this key and crashes with aKeyError. SettingTOX_DOCKER_GATEWAY=0.0.0.0bypasses the broken lookup entirely.This became flaky starting Feb 12 as the Docker 29 rollout to GitHub Actions runners progresses. Once complete, tests will fail 100% of the time without this fix.
This workaround can be removed once tox-docker merges the fix.
Mirrors the fix applied in library-registry#862.
Motivation and Context
CI test runs are failing intermittently with:
How Has This Been Tested?
Checklist