Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 15 additions & 1 deletion docs/bumping-upstream.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,20 @@ gh api "repos/moby/moby/contents/go.mod?ref=docker-v29.8.0" --jq .content | base
`GO_VERSION` in `versions.env` must be at or above that. It is pinned because
the toolchain changes the output bytes, so raise it deliberately, not reflexively.

**The floor is not the target.** `go.mod` says what moby *needs*; its
`Dockerfile` (`ARG GO_VERSION`) says what moby *ships with*, and the release
notes list the stdlib CVEs that Go version fixes in `dockerd`:

```sh
gh api "repos/moby/moby/contents/Dockerfile?ref=docker-v29.9.0" --jq .content | base64 -d | grep '^ARG GO_VERSION'
```

29.9.0 was bumped to the floor (1.26.8) while moby built with 1.26.9, which
shipped `rootfs-v29.9.0-1` without five Go security fixes. Match moby's Go
version unless there is a stated reason not to, and after building, confirm it
rather than trusting the pin: `go version` on the extracted `dockerd` prints
the toolchain that actually built it.

### 3. Decide about containerd, runc and buildkit — deliberately

moby's own `Dockerfile` carries `ARG CONTAINERD_VERSION` / `ARG RUNC_VERSION`.
Expand Down Expand Up @@ -161,7 +175,7 @@ letting the two drift silently.
## Checklist

- [ ] Tag and commit SHA resolved, and the method verified against the existing pin
- [ ] Go floor checked against moby's `go.mod`
- [ ] Go floor checked against moby's `go.mod`, and `GO_VERSION` matched to moby's `Dockerfile` (the floor is not the target)
- [ ] containerd / runc / buildkit: moved with a stated reason, or deliberately left alone
- [ ] `versions.env` updated, `ROOTFS_REVISION` reset to 1
- [ ] `manifest.json`: new default entry with empty sha256, previous engine retained
Expand Down
9 changes: 6 additions & 3 deletions guest/rootfs/versions.env
Original file line number Diff line number Diff line change
Expand Up @@ -43,16 +43,19 @@ ALPINE_DIGEST=sha256:28bd5fe8b56d1bd048e5babf5b10710ebe0bae67db86916198a6eec4349

# Toolchain used to build them; bumping this changes output, so it is pinned too.
# Floor is set by moby's go.mod (docker-v29.9.0 requires >= 1.26.8, as do
# containerd v2.3.6 and buildkit v0.33.1).
GO_VERSION=1.26.8
# containerd v2.3.6 and buildkit v0.33.1). The floor is not the target: moby
# builds docker-v29.9.0 with Go 1.26.9, whose runtime fixes five stdlib CVEs
# in dockerd (HTTP/2 DoS x4, a Windows junction escape) -- see moby's 29.9.0
# notes. rootfs 29.9.0-1 was built with 1.26.8 and lacks them.
GO_VERSION=1.26.9

# Packaging revision of the rootfs itself. The tarball carries more than the
# engine (the skrog-agent, config, Alpine userland), so it can change while
# ENGINE_VERSION stays put; the artifact version is ENGINE_VERSION-REVISION,
# Debian-style. Bump this when rootfs contents change without an engine bump;
# reset to 1 on an engine bump. (The first 29.7.2 release predates the scheme
# and is tagged bare, as rootfs-v29.7.2.)
ROOTFS_REVISION=1
ROOTFS_REVISION=2

# Bump to force CI to recompile the engine even when nothing above changed —
# the escape hatch for a poisoned cache or a change to build.sh's docker
Expand Down
8 changes: 4 additions & 4 deletions internal/release/manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -42,12 +42,12 @@
"default": true,
"rootfs": {
"amd64": {
"url": "https://github.com/wslkit/skrog/releases/download/rootfs-v29.9.0-1/skrog-rootfs-29.9.0-1-amd64.tar.gz",
"sha256": "bc219b98f770f0d9ebbfaa82154412a8f383f477877465e8c9818d00445272d0"
"url": "https://github.com/wslkit/skrog/releases/download/rootfs-v29.9.0-2/skrog-rootfs-29.9.0-2-amd64.tar.gz",
"sha256": "63158299a08924e80187f4effb1c039e351fbc2ec71ce8016146c97489b3a175"
},
"arm64": {
"url": "https://github.com/wslkit/skrog/releases/download/rootfs-v29.9.0-1/skrog-rootfs-29.9.0-1-arm64.tar.gz",
"sha256": "4b06bbd5ef479ea0e8a8f2208a55643d0f5681db9263e5d078fca1f56909aff8"
"url": "https://github.com/wslkit/skrog/releases/download/rootfs-v29.9.0-2/skrog-rootfs-29.9.0-2-arm64.tar.gz",
"sha256": "9c09950241a96ae93845fdf683185b8c7666e0245aa2ef70e894336a248ea099"
}
},
"components": {
Expand Down
Loading