chore: upgrade github.com/docker/cli to v29 #1547
No reviewers
Labels
No labels
FreeBSD
Kind/Breaking
Kind/Bug
Kind/Chore
Kind/DependencyUpdate
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/Security
Kind/Testing
Priority
Critical
Priority
High
Priority
Low
Priority
Medium
Reviewed
Confirmed
Reviewed
Duplicate
Reviewed
Invalid
Reviewed
Won't Fix
Status
Abandoned
Status
Blocked
Status
Need More Info
Windows
linux-powerpc64le
linux-riscv64
linux-s390x
run-end-to-end-tests
run-forgejo-tests
run-multi-platform-tests
No milestone
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
forgejo/runner!1547
Loading…
Reference in a new issue
No description provided.
Delete branch "aahlenst/runner:docker-29"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
github.com/docker/cli v29 brings multiple breaking changes due to changed method signatures. github.com/docker/docker has been deprecated and replaced with github.com/moby/moby/client and github.com/moby/moby/api.
63ff6aeb189f5a5046a69f5a5046a6a4c12f58ecIt looks like this update hits https://github.com/moby/moby/pull/49520 with the Docker version included in Debian 13. That's why the
forgejo-runner execjob fails.In short, Docker includes the network prefix in the gateway's address when creating IPv6 networks. This causes
netip.ParseAddr()inside the Docker API to fail when fetching the list of networks. There isn't really a way around fetching the list of networks because we only have the network's name and need it's ID to operate on it.Do we accept that and recommend that users that need IPv6 upgrade to the Docker version shipped by Docker?
@aahlenst wrote in #1547 (comment):
Hm... the docker-stable test runs on Debian Bookworm. Debian's primary support EOL for Bookworm is 10 June 2026... huh... that's rather soon... but then it transitions to long-term support until 2028. It's fairly reasonable to assume people will be running it for a while.
I understand this dependency upgrade isn't being done because of specific value added, but as an inevitable requirement. Eventually we'll want to use an API that requires an updated client, or be affected by a bug or security issue.
I think it seems reasonable to move forward with this change. Doesn't seem right for us to be stuck on a dependency because of a slow-moving distro with long-term support, especially when there's a pathway for such users to address it: update their Docker dependency independent of their OS.
I'm thinking we should consider it a breaking change, and document the minimum Docker version required for compatibility. And then... probably do a v13? We could tackle the other v13 issues that we've discussed in the same time. (We could either hold this PR and others unmerged, or, do a temporary v13 branch -- but keep
mainreleasable for a few weeks while we get those v13 issues ready.)@mfenniak wrote in #1547 (comment):
Unfortunately, the impact is much bigger. My test machine uses Debian 13. That's Trixie. And it has the same problem. It affects Docker versions < 27. Interestingly, Canonical has added Docker 29 to Ubuntu 24.04.
Forgejo Runner is not the only software that seems to be affected.
Correct.
Technically, the minimal version is 25.0. It's only a problem if you run into that Docker bug with IPv6. Doing a major version because of that seems kinda... extreme?
Lobbying the Moby folks to make their parsing more lenient would be a possibility, too.
If we decide to do v13, my preference would be a temporary branch. Fewer merge conflicts, easier to test, ...
@aahlenst wrote in #1547 (comment):
Link is to v29, text says v25?
My thought process on a major version is kinda simple: we did v12.0.0 when we added
gitas an external dependency, and the release of this PR would bump the minimum supported version of an external dependency.I guess it could be argued that the combination of having an IPv6 network on your Docker system, and using a >6 month old Docker release, may not be a common combination. But we do know there are users with the IPv6 facet at least (#1399, #119). And I'm not sure if common matters, as we're planning other v13 things that also won't affect common users (eg. removing
DOCKER_PASSWORD). The major version bump just waves a small flag to people saying, "pay attention on this upgrade".@mfenniak wrote in #1547 (comment):
Yes, because we would update to v29 and the oldest supported version of v29 is documented in there.
I'm not opposed. Waiting forever makes upgrading more painful.
View command line instructions
Manual merge helper
Use this merge commit message when completing the merge manually.
Checkout
From your project repository, check out a new branch and test the changes.