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
5 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?
Update the Docker client libraries from v28 to v29 because v28 is no longer maintained. The minimum requirement for Docker has been raised to Docker 25.0.
Users of Debian 13 (Trixie) or 12 (Bookworm) that use IPv6 are affected by a bug in the Docker version shipped by Debian that results in error messages like:
Affected Debian users should either not upgrade Forgejo Runner or switch to the Docker package provided by Docker until the problem is either resolved by the Docker or Debian developers.
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.
A while ago I raised an issue upstream about the Debian-related problems: https://github.com/moby/moby/issues/52991. It looks like the Debian maintainers are going to fix Docker in Trixie. Otherwise, the Docker people might do something about it.
@mfenniak wrote in #1547 (comment):
I have a double edge sword with such support schemes, users (or I rather assume companies) want to stay stable on a OS and presumably receive as little (security) fixes possible to stay bug-compatible. Then why would they continuously upgrade Forgejo runner to the latest version? AFAIK you could simply stop upgrading and you can still connect to a Forgejo v16 instance.
a4c12f58ec2fa2ba88efI've updated the PR and altered the problematic CI workflow. Like
integration-tests-with-docker, it's now a matrix job that runs with the Docker version included in Debian and the one distributed by Docker. I've commented out the Docker version included in Debian because that's going to fail until https://github.com/moby/moby/issues/52991 is resolved. I've added a comment that indicates that.can we run on Trixie? it should have a newer docker version
@viceice wrote in #1547 (comment):
Yes, but it doesn't help, because Docker on Trixie is too old, too. The backport in question would be for Trixie. Bookworm's full support has ended last month. Switching to Trixie would make sense anyway.
2fa2ba88ef248fc1d300cascading-pr updated at actions/setup-forgejo#1044
248fc1d3000d57c2e9cdcascading-pr updated at actions/setup-forgejo#1044