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

image

... 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:

  1. The frontend won't try to render the Configuration digest: detail row for a tag unless the JSON object it received from Rails includes a config_digest field, which in turn is mapped from the List Repository Tags response from the registry;

  2. The backend won't fallback to #config_blob when there is no config_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)).

Edited by João Pereira