devcontainers / devcontainers/cli

Missing manifest digest when building and pushing multi-platform images

Open
#1,062 1 comment 0 reactions 0 assignees View on GitHub
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
```
Image

```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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.