devcontainers / devcontainers/cli
Missing manifest digest when building and pushing multi-platform images
- Dominant language
- TypeScript
- Stars
- 3k
- Forks
- 457
- Avg merge
- 13h 17m
- Merged PRs (30d)
- 6
Description
The following build command results in images lacking manifests.
However, the cache image does have a manifest.
```shell
$ devcontainer build \
--workspace-folder . \
--cache-from registry.gitlab.com/jshbrntt/devcontainers/base/cache:latest \
--cache-to registry.gitlab.com/jshbrntt/devcontainers/base/cache:latest \
--platform linux/amd64 \
--platform linux/arm64 \
--image-name registry.gitlab.com/jshbrntt/devcontainers/base:latest
```
```shell
$ docker manifest inspect registry.gitlab.com/jshbrntt/devcontainers/base:latest
{
"schemaVersion": 2,
"mediaType": "application/vnd.oci.image.index.v1+json",
"manifests": [
{
"mediaType": "application/vnd.oci.image.manifest.v1+json",
"size": 2000,
"digest": "sha256:392a7bfed82a8840bcde04a902dff2a4ead53ebfefd5f3dfdafdba0a4ed502e9",
"platform": {
"architecture": "amd64",
"os": "linux"
}
},
{
"mediaType": "application/vnd.oci.image.manifest.v1+json",
"size": 2000,
"digest": "sha256:e2837457d0638f4c5b759e19f331035fcdd494b44696a1051d24961b221ff0b5",
"platform": {
"architecture": "arm64",
"os": "linux"
}
},
{
"mediaType": "application/vnd.oci.image.manifest.v1+json",
"size": 566,
"digest": "sha256:57e6f2e1ad024393f23134b98db85ab518d6b3719f3efd562d6ab63c84f8b56d",
"platform": {
"architecture": "unknown",
"os": "unknown"
}
},
{
"mediaType": "application/vnd.oci.image.manifest.v1+json",
"size": 566,
"digest": "sha256:d8fcfd1cff48c696ad50c0fab56fc00d6a779c134a7f0cf175d95fc7d018ea1d",
"platform": {
"architecture": "unknown",
"os": "unknown"
}
}
]
}
```
Contributor guide
Research direction
Start by reproducing the provided devcontainer build command with the two platforms, then inspect the pushed image using docker manifest inspect and compare it with the cache image's manifest. Trace the CLI's multi-platform build-and-push entry point to determine where the published manifest differs. Done means the pushed image exposes the expected platform manifest digests without the reported missing-manifest behavior.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- docker, typescript
- Domain
- cli, devops, infrastructure
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 42/100