Do not attempt to display a configuration digest for container registry tags that point to manifest lists/indexes
Context
Part of Manifest lists/multi-arch images are not displa... (&10434 - closed).
Once Use the list repository tags API and its pagina... (#411387 - closed) is completed, the bug described in &10434 (closed) will be partially resolved. This issue is for one of the changes that must be implemented to completely resolve it AND improve the overall UX.
Task
Using the below screenshot (after #411387 (closed)) from https://gitlab.com/jdrpereira/multi-arch/container_registry/1245177...
... and knowing that tag 1.0.0
points to a manifest list/index, which by definition have no configuration (thus no Configuration digest
to show), we must ensure that:
-
The frontend won't try to render the
Configuration digest:
detail row for a tag unless the JSON object it received from Rails includes aconfig_digest
field, which in turn is mapped from theList Repository Tags
response from the registry; -
The backend won't fallback to
#config_blob
when there is noconfig_digest
for a given tag. Instead, it should leave the config digest empty (or not present) in the GraphQL/REST API response.
For context, here is the registry API response when listing tags for this repository:
HTTP/1.1 200 OK
content-length: 1052
content-type: application/json
date: Tue, 07 Nov 2023 10:16:42 GMT
[
{
"created_at": "2023-11-07T10:11:58.355Z",
"digest": "sha256:70e3d48b4aec4e0a4d70dcd25ad921d290eedc7ce3f37c25b3357b0ede197aa0",
"media_type": "application/vnd.docker.distribution.manifest.list.v2+json",
"name": "1.0.0",
"published_at": "2023-11-07T10:12:55.809Z",
"size_bytes": 0,
"updated_at": "2023-11-07T10:12:55.809Z"
},
{
"config_digest": "sha256:d3e6ddec8641880715f52dffb4740d228916f0682afab337191c626eaefeb9db",
"created_at": "2023-11-07T10:04:42.451Z",
"digest": "sha256:dbd3f975d9c1d9727b3fcc3954c006f933319c1bc278cc304d21b9127bf2cabd",
"media_type": "application/vnd.docker.distribution.manifest.v2+json",
"name": "1.0.0-amd64",
"published_at": "2023-11-07T10:04:42.451Z",
"size_bytes": 136748799
},
{
"config_digest": "sha256:7f9292d0e9f620a40690ebd89ae52831e66b8e160c07a5815498f8b20f4a34fb",
"created_at": "2023-11-07T10:09:55.193Z",
"digest": "sha256:b41fa10fdc1b5f3183d1f310066923a05af8c4e44500e2bb059ef4b956408468",
"media_type": "application/vnd.docker.distribution.manifest.v2+json",
"name": "1.0.0-arm64v8",
"published_at": "2023-11-07T10:09:55.193Z",
"size_bytes": 130993141
}
]
Note that there is no config_digest
for tag 1.0.0
, but Rails is falling back to the #config_blob
, which ultimately leads to a wrong value for the config_digest
(more details in #411387 (comment 1636879951)).