Skip to content

GraphQL: get GAR artifacts from project

This issue is to add a new GraphQL field to the ProjectType to get the Google Artifact Registry artifacts from the project.

On the project, add a new field google_cloud_platform_artifact_registry_repository_artifacts that returns a list of a new Type (abstract): Integrations::GoogleCloudPlatform::ArtifactRegistry::ArtifactType.

The return type should be an abstract type: Integrations::GoogleCloudPlatform::ArtifactRegistry::ArtifactType.

The single concrete type that we will have is Integrations::GoogleCloudPlatform::ArtifactRegistry::DockerImageType. It has the following fields:

Name Type
name String!
uri String!
tags [String!]
imageSizeBytes String
uploadTime String
mediaType String
buildTime String
updateTime String
projectId String!
location String!
repository String!
image String!
digest String!
gcpImageUrl String!

The resolver should call on the client:

  1. #repository to make sure that it's the correct format (DOCKER).
  2. #artifacts to get the artifacts in a paginated manner.

The resolver should also support:

  1. Sorting in asc/desc order by uploadTime

  2. pagination. Pagination options come from the client method #artifacts. Connect the GraphQL pagination with that external system. See https://docs.gitlab.com/ee/development/graphql_guide/pagination.html#external-pagination.

Regarding permissions, the user will need to have read_gcp_artifact_registry_repository on the target project.

These changes should be gated behind the Google Artifact Registry feature flag.

These changes should be marked as alpha.

Sample Response

Realistic Images List

Below is a list of 25 images extracted from a sample GAR repository. This number is enough to mock two pages of the UI where the response of this API is going to be displayed. Some images have either a lot of tags or tags with a really long name to allow testing the truncation on the UI.

Click to expand
{
  "data": {
    "project": {
      "googleCloudPlatformArtifactRegistryRepositoryArtifacts": {
        "nodes": [
          {
            "name": "projects/dev-package-container-96a3ff34/locations/us-east1/repositories/myrepo/dockerImages/alpine@sha256:6a0657acfef760bd9e293361c9b558e98e7d740ed0dffca823d17098a4ffddf5",
            "uri": "us-east1-docker.pkg.dev/dev-package-container-96a3ff34/myrepo/alpine@sha256:6a0657acfef760bd9e293361c9b558e98e7d740ed0dffca823d17098a4ffddf5",
            "tags": [
              "3.15",
              "3.15.11"
            ],
            "imageSizeBytes": "2827903",
            "uploadTime": "2023-12-07T11:48:47.598511Z",
            "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
            "buildTime": "2023-11-30T23:23:11.980068941Z",
            "updateTime": "2023-12-07T11:48:50.840751Z",
            "projectId": "dev-package-container-96a3ff34",
            "location": "us-east1",
            "repository": "myrepo",
            "image": "alpine",
            "digest": "sha256:6a0657acfef760bd9e293361c9b558e98e7d740ed0dffca823d17098a4ffddf5",
            "gcpImageUrl": "https://us-east1-docker.pkg.dev/dev-package-container-96a3ff34/myrepo/alpine@sha256:6a0657acfef760bd9e293361c9b558e98e7d740ed0dffca823d17098a4ffddf5",
            "__typename": "DockerImage"
          },
          {
            "name": "projects/dev-package-container-96a3ff34/locations/us-east1/repositories/myrepo/dockerImages/alpine@sha256:b6e5fbdf7e79701eb7c3b82928089980986395a8ab16f96cdc6e6874f618b375",
            "uri": "us-east1-docker.pkg.dev/dev-package-container-96a3ff34/myrepo/alpine@sha256:b6e5fbdf7e79701eb7c3b82928089980986395a8ab16f96cdc6e6874f618b375",
            "tags": [
              "3.17",
              "3.17.6"
            ],
            "imageSizeBytes": "3380795",
            "uploadTime": "2023-12-07T11:48:30.834559Z",
            "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
            "buildTime": "2023-11-30T23:22:59.087794357Z",
            "updateTime": "2023-12-07T11:48:34.153599Z",
            "projectId": "dev-package-container-96a3ff34",
            "location": "us-east1",
            "repository": "myrepo",
            "image": "alpine",
            "digest": "sha256:b6e5fbdf7e79701eb7c3b82928089980986395a8ab16f96cdc6e6874f618b375",
            "gcpImageUrl": "https://us-east1-docker.pkg.dev/dev-package-container-96a3ff34/myrepo/alpine@sha256:b6e5fbdf7e79701eb7c3b82928089980986395a8ab16f96cdc6e6874f618b375",
            "__typename": "DockerImage"
          },
          {
            "name": "projects/dev-package-container-96a3ff34/locations/us-east1/repositories/myrepo/dockerImages/alpine@sha256:ca452b8ab373e6de9c39d030870a52b8f0d3a9cf998c43183fd114660ae96330",
            "uri": "us-east1-docker.pkg.dev/dev-package-container-96a3ff34/myrepo/alpine@sha256:ca452b8ab373e6de9c39d030870a52b8f0d3a9cf998c43183fd114660ae96330",
            "tags": [
              "3.16.8"
            ],
            "imageSizeBytes": "2809254",
            "uploadTime": "2023-12-07T11:48:40.510831Z",
            "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
            "buildTime": "2023-11-30T23:23:05.499726235Z",
            "updateTime": "2023-12-07T11:48:40.510831Z",
            "projectId": "dev-package-container-96a3ff34",
            "location": "us-east1",
            "repository": "myrepo",
            "image": "alpine",
            "digest": "sha256:ca452b8ab373e6de9c39d030870a52b8f0d3a9cf998c43183fd114660ae96330",
            "gcpImageUrl": "https://us-east1-docker.pkg.dev/dev-package-container-96a3ff34/myrepo/alpine@sha256:ca452b8ab373e6de9c39d030870a52b8f0d3a9cf998c43183fd114660ae96330",
            "__typename": "DockerImage"
          },
          {
            "name": "projects/dev-package-container-96a3ff34/locations/us-east1/repositories/myrepo/dockerImages/alpine@sha256:d695c3de6fcd8cfe3a6222b0358425d40adfd129a8a47c3416faff1a8aece389",
            "uri": "us-east1-docker.pkg.dev/dev-package-container-96a3ff34/myrepo/alpine@sha256:d695c3de6fcd8cfe3a6222b0358425d40adfd129a8a47c3416faff1a8aece389",
            "tags": [
              "3",
              "3.18",
              "3.18.5",
              "latest"
            ],
            "imageSizeBytes": "3403894",
            "uploadTime": "2023-12-07T11:48:19.187359Z",
            "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
            "buildTime": "2023-11-30T23:22:52.738129857Z",
            "updateTime": "2023-12-07T11:48:54.439263Z",
            "projectId": "dev-package-container-96a3ff34",
            "location": "us-east1",
            "repository": "myrepo",
            "image": "alpine",
            "digest": "sha256:d695c3de6fcd8cfe3a6222b0358425d40adfd129a8a47c3416faff1a8aece389",
            "gcpImageUrl": "https://us-east1-docker.pkg.dev/dev-package-container-96a3ff34/myrepo/alpine@sha256:d695c3de6fcd8cfe3a6222b0358425d40adfd129a8a47c3416faff1a8aece389",
            "__typename": "DockerImage"
          },
          {
            "name": "projects/dev-package-container-96a3ff34/locations/us-east1/repositories/myrepo/dockerImages/nginx@sha256:06a3161e61728a5e8169639c65f1e6a9683bb128e1fa1469a90278bb8911e4cc",
            "uri": "us-east1-docker.pkg.dev/dev-package-container-96a3ff34/myrepo/nginx@sha256:06a3161e61728a5e8169639c65f1e6a9683bb128e1fa1469a90278bb8911e4cc",
            "tags": null,
            "imageSizeBytes": "5022486",
            "uploadTime": "2023-12-07T11:47:17.633359Z",
            "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
            "buildTime": "2023-12-01T07:41:21.068714329Z",
            "updateTime": "2023-12-07T11:47:17.633359Z",
            "projectId": "dev-package-container-96a3ff34",
            "location": "us-east1",
            "repository": "myrepo",
            "image": "nginx",
            "digest": "sha256:06a3161e61728a5e8169639c65f1e6a9683bb128e1fa1469a90278bb8911e4cc",
            "gcpImageUrl": "https://us-east1-docker.pkg.dev/dev-package-container-96a3ff34/myrepo/nginx@sha256:06a3161e61728a5e8169639c65f1e6a9683bb128e1fa1469a90278bb8911e4cc",
            "__typename": "DockerImage"
          },
          {
            "name": "projects/dev-package-container-96a3ff34/locations/us-east1/repositories/myrepo/dockerImages/nginx@sha256:10d1f5b58f74683ad34eb29287e07dab1e90f10af243f151bb50aa5dbb4d62ee",
            "uri": "us-east1-docker.pkg.dev/dev-package-container-96a3ff34/myrepo/nginx@sha256:10d1f5b58f74683ad34eb29287e07dab1e90f10af243f151bb50aa5dbb4d62ee",
            "tags": [
              "latest"
            ],
            "imageSizeBytes": null,
            "uploadTime": "2023-12-07T11:46:41.185327Z",
            "mediaType": "application/vnd.docker.distribution.manifest.list.v2+json",
            "buildTime": null,
            "updateTime": "2023-12-07T11:46:41.185327Z",
            "projectId": "dev-package-container-96a3ff34",
            "location": "us-east1",
            "repository": "myrepo",
            "image": "nginx",
            "digest": "sha256:10d1f5b58f74683ad34eb29287e07dab1e90f10af243f151bb50aa5dbb4d62ee",
            "gcpImageUrl": "https://us-east1-docker.pkg.dev/dev-package-container-96a3ff34/myrepo/nginx@sha256:10d1f5b58f74683ad34eb29287e07dab1e90f10af243f151bb50aa5dbb4d62ee",
            "__typename": "DockerImage"
          },
          {
            "name": "projects/dev-package-container-96a3ff34/locations/us-east1/repositories/myrepo/dockerImages/nginx@sha256:3c4c1f42a89e343c7b050c5e5d6f670a0e0b82e70e0e7d023f10092a04bbb5a7",
            "uri": "us-east1-docker.pkg.dev/dev-package-container-96a3ff34/myrepo/nginx@sha256:3c4c1f42a89e343c7b050c5e5d6f670a0e0b82e70e0e7d023f10092a04bbb5a7",
            "tags": null,
            "imageSizeBytes": "70540995",
            "uploadTime": "2023-12-07T11:45:36.839503Z",
            "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
            "buildTime": "2023-11-21T09:05:32.482668371Z",
            "updateTime": "2023-12-07T11:45:36.839503Z",
            "projectId": "dev-package-container-96a3ff34",
            "location": "us-east1",
            "repository": "myrepo",
            "image": "nginx",
            "digest": "sha256:3c4c1f42a89e343c7b050c5e5d6f670a0e0b82e70e0e7d023f10092a04bbb5a7",
            "gcpImageUrl": "https://us-east1-docker.pkg.dev/dev-package-container-96a3ff34/myrepo/nginx@sha256:3c4c1f42a89e343c7b050c5e5d6f670a0e0b82e70e0e7d023f10092a04bbb5a7",
            "__typename": "DockerImage"
          },
          {
            "name": "projects/dev-package-container-96a3ff34/locations/us-east1/repositories/myrepo/dockerImages/nginx@sha256:47d1b941e56c8730b945e2fddc8101490926d8425561aa5a9d8fa16f338649ba",
            "uri": "us-east1-docker.pkg.dev/dev-package-container-96a3ff34/myrepo/nginx@sha256:47d1b941e56c8730b945e2fddc8101490926d8425561aa5a9d8fa16f338649ba",
            "tags": null,
            "imageSizeBytes": "5018902",
            "uploadTime": "2023-12-07T11:46:54.181919Z",
            "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
            "buildTime": "2023-11-30T23:07:26.380879994Z",
            "updateTime": "2023-12-07T11:46:54.181919Z",
            "projectId": "dev-package-container-96a3ff34",
            "location": "us-east1",
            "repository": "myrepo",
            "image": "nginx",
            "digest": "sha256:47d1b941e56c8730b945e2fddc8101490926d8425561aa5a9d8fa16f338649ba",
            "gcpImageUrl": "https://us-east1-docker.pkg.dev/dev-package-container-96a3ff34/myrepo/nginx@sha256:47d1b941e56c8730b945e2fddc8101490926d8425561aa5a9d8fa16f338649ba",
            "__typename": "DockerImage"
          },
          {
            "name": "projects/dev-package-container-96a3ff34/locations/us-east1/repositories/myrepo/dockerImages/nginx@sha256:493ffa6a5ff502f871683506749ee924d9a32d137209b412e5875eda507ab643",
            "uri": "us-east1-docker.pkg.dev/dev-package-container-96a3ff34/myrepo/nginx@sha256:493ffa6a5ff502f871683506749ee924d9a32d137209b412e5875eda507ab643",
            "tags": null,
            "imageSizeBytes": "68704940",
            "uploadTime": "2023-12-07T11:46:14.070415Z",
            "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
            "buildTime": "2023-11-22T01:16:17.081910914Z",
            "updateTime": "2023-12-07T11:46:14.070415Z",
            "projectId": "dev-package-container-96a3ff34",
            "location": "us-east1",
            "repository": "myrepo",
            "image": "nginx",
            "digest": "sha256:493ffa6a5ff502f871683506749ee924d9a32d137209b412e5875eda507ab643",
            "gcpImageUrl": "https://us-east1-docker.pkg.dev/dev-package-container-96a3ff34/myrepo/nginx@sha256:493ffa6a5ff502f871683506749ee924d9a32d137209b412e5875eda507ab643",
            "__typename": "DockerImage"
          },
          {
            "name": "projects/dev-package-container-96a3ff34/locations/us-east1/repositories/myrepo/dockerImages/nginx@sha256:67f6dd8c320f862283dd7e4a7ea627cb7fd3fc068525e818e2459fc38293d1c1",
            "uri": "us-east1-docker.pkg.dev/dev-package-container-96a3ff34/myrepo/nginx@sha256:67f6dd8c320f862283dd7e4a7ea627cb7fd3fc068525e818e2459fc38293d1c1",
            "tags": null,
            "imageSizeBytes": "5407094",
            "uploadTime": "2023-12-07T11:47:12.990031Z",
            "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
            "buildTime": "2023-12-01T05:11:23.238569476Z",
            "updateTime": "2023-12-07T11:47:12.990031Z",
            "projectId": "dev-package-container-96a3ff34",
            "location": "us-east1",
            "repository": "myrepo",
            "image": "nginx",
            "digest": "sha256:67f6dd8c320f862283dd7e4a7ea627cb7fd3fc068525e818e2459fc38293d1c1",
            "gcpImageUrl": "https://us-east1-docker.pkg.dev/dev-package-container-96a3ff34/myrepo/nginx@sha256:67f6dd8c320f862283dd7e4a7ea627cb7fd3fc068525e818e2459fc38293d1c1",
            "__typename": "DockerImage"
          },
          {
            "name": "projects/dev-package-container-96a3ff34/locations/us-east1/repositories/myrepo/dockerImages/nginx@sha256:736342e81e97220f954b8c33846ba80d2d95f59b30225a5c63d063c8b250b0ab",
            "uri": "us-east1-docker.pkg.dev/dev-package-container-96a3ff34/myrepo/nginx@sha256:736342e81e97220f954b8c33846ba80d2d95f59b30225a5c63d063c8b250b0ab",
            "tags": null,
            "imageSizeBytes": "67237935",
            "uploadTime": "2023-12-07T11:46:04.108111Z",
            "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
            "buildTime": "2023-11-21T10:16:58.196264670Z",
            "updateTime": "2023-12-07T11:46:04.108111Z",
            "projectId": "dev-package-container-96a3ff34",
            "location": "us-east1",
            "repository": "myrepo",
            "image": "nginx",
            "digest": "sha256:736342e81e97220f954b8c33846ba80d2d95f59b30225a5c63d063c8b250b0ab",
            "gcpImageUrl": "https://us-east1-docker.pkg.dev/dev-package-container-96a3ff34/myrepo/nginx@sha256:736342e81e97220f954b8c33846ba80d2d95f59b30225a5c63d063c8b250b0ab",
            "__typename": "DockerImage"
          },
          {
            "name": "projects/dev-package-container-96a3ff34/locations/us-east1/repositories/myrepo/dockerImages/nginx@sha256:7dc1fb53813c6fd41931f53a41738b29949857e1a433d42d515ef6ed329650a8",
            "uri": "us-east1-docker.pkg.dev/dev-package-container-96a3ff34/myrepo/nginx@sha256:7dc1fb53813c6fd41931f53a41738b29949857e1a433d42d515ef6ed329650a8",
            "tags": null,
            "imageSizeBytes": "5190388",
            "uploadTime": "2023-12-07T11:46:49.554799Z",
            "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
            "buildTime": "2023-12-01T07:02:29.220960844Z",
            "updateTime": "2023-12-07T11:46:49.554799Z",
            "projectId": "dev-package-container-96a3ff34",
            "location": "us-east1",
            "repository": "myrepo",
            "image": "nginx",
            "digest": "sha256:7dc1fb53813c6fd41931f53a41738b29949857e1a433d42d515ef6ed329650a8",
            "gcpImageUrl": "https://us-east1-docker.pkg.dev/dev-package-container-96a3ff34/myrepo/nginx@sha256:7dc1fb53813c6fd41931f53a41738b29949857e1a433d42d515ef6ed329650a8",
            "__typename": "DockerImage"
          },
          {
            "name": "projects/dev-package-container-96a3ff34/locations/us-east1/repositories/myrepo/dockerImages/nginx@sha256:9f2f5675034f8a3ba56b193bf6f9b4a38bb59fbceefe7294f485860cc688f4c5",
            "uri": "us-east1-docker.pkg.dev/dev-package-container-96a3ff34/myrepo/nginx@sha256:9f2f5675034f8a3ba56b193bf6f9b4a38bb59fbceefe7294f485860cc688f4c5",
            "tags": [
              "stable-alpine3.17-slim"
            ],
            "imageSizeBytes": null,
            "uploadTime": "2023-12-07T11:47:17.803503Z",
            "mediaType": "application/vnd.docker.distribution.manifest.list.v2+json",
            "buildTime": null,
            "updateTime": "2023-12-07T11:47:17.803503Z",
            "projectId": "dev-package-container-96a3ff34",
            "location": "us-east1",
            "repository": "myrepo",
            "image": "nginx",
            "digest": "sha256:9f2f5675034f8a3ba56b193bf6f9b4a38bb59fbceefe7294f485860cc688f4c5",
            "gcpImageUrl": "https://us-east1-docker.pkg.dev/dev-package-container-96a3ff34/myrepo/nginx@sha256:9f2f5675034f8a3ba56b193bf6f9b4a38bb59fbceefe7294f485860cc688f4c5",
            "__typename": "DockerImage"
          },
          {
            "name": "projects/dev-package-container-96a3ff34/locations/us-east1/repositories/myrepo/dockerImages/nginx@sha256:9f9694358d9ebb22abc11c36a70649b4b1d8d07e3e2502d987e0491ce3f7d625",
            "uri": "us-east1-docker.pkg.dev/dev-package-container-96a3ff34/myrepo/nginx@sha256:9f9694358d9ebb22abc11c36a70649b4b1d8d07e3e2502d987e0491ce3f7d625",
            "tags": null,
            "imageSizeBytes": "4630115",
            "uploadTime": "2023-12-07T11:46:59.219055Z",
            "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
            "buildTime": "2023-12-01T08:32:58.368479449Z",
            "updateTime": "2023-12-07T11:46:59.219055Z",
            "projectId": "dev-package-container-96a3ff34",
            "location": "us-east1",
            "repository": "myrepo",
            "image": "nginx",
            "digest": "sha256:9f9694358d9ebb22abc11c36a70649b4b1d8d07e3e2502d987e0491ce3f7d625",
            "gcpImageUrl": "https://us-east1-docker.pkg.dev/dev-package-container-96a3ff34/myrepo/nginx@sha256:9f9694358d9ebb22abc11c36a70649b4b1d8d07e3e2502d987e0491ce3f7d625",
            "__typename": "DockerImage"
          },
          {
            "name": "projects/dev-package-container-96a3ff34/locations/us-east1/repositories/myrepo/dockerImages/nginx@sha256:ace2c553858adea7dd7603797a58221fd8040552f433dd2307469b7cf3a2119b",
            "uri": "us-east1-docker.pkg.dev/dev-package-container-96a3ff34/myrepo/nginx@sha256:ace2c553858adea7dd7603797a58221fd8040552f433dd2307469b7cf3a2119b",
            "tags": null,
            "imageSizeBytes": "59506361",
            "uploadTime": "2023-12-07T11:45:54.220975Z",
            "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
            "buildTime": "2023-11-21T11:11:43.214047691Z",
            "updateTime": "2023-12-07T11:45:54.220975Z",
            "projectId": "dev-package-container-96a3ff34",
            "location": "us-east1",
            "repository": "myrepo",
            "image": "nginx",
            "digest": "sha256:ace2c553858adea7dd7603797a58221fd8040552f433dd2307469b7cf3a2119b",
            "gcpImageUrl": "https://us-east1-docker.pkg.dev/dev-package-container-96a3ff34/myrepo/nginx@sha256:ace2c553858adea7dd7603797a58221fd8040552f433dd2307469b7cf3a2119b",
            "__typename": "DockerImage"
          },
          {
            "name": "projects/dev-package-container-96a3ff34/locations/us-east1/repositories/myrepo/dockerImages/nginx@sha256:affc31e97c9b67d5ad1d461f32ec234a0758bf25755ea380526ab5e3dacdbf8e",
            "uri": "us-east1-docker.pkg.dev/dev-package-container-96a3ff34/myrepo/nginx@sha256:affc31e97c9b67d5ad1d461f32ec234a0758bf25755ea380526ab5e3dacdbf8e",
            "tags": null,
            "imageSizeBytes": "5058909",
            "uploadTime": "2023-12-07T11:47:03.816143Z",
            "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
            "buildTime": "2023-12-01T02:40:31.016127143Z",
            "updateTime": "2023-12-07T11:47:03.816143Z",
            "projectId": "dev-package-container-96a3ff34",
            "location": "us-east1",
            "repository": "myrepo",
            "image": "nginx",
            "digest": "sha256:affc31e97c9b67d5ad1d461f32ec234a0758bf25755ea380526ab5e3dacdbf8e",
            "gcpImageUrl": "https://us-east1-docker.pkg.dev/dev-package-container-96a3ff34/myrepo/nginx@sha256:affc31e97c9b67d5ad1d461f32ec234a0758bf25755ea380526ab5e3dacdbf8e",
            "__typename": "DockerImage"
          },
          {
            "name": "projects/dev-package-container-96a3ff34/locations/us-east1/repositories/myrepo/dockerImages/nginx@sha256:b50f4e222b2d749d6a999baf30df1d6090d47f2ae855ae80ede69d6dddf5b58c",
            "uri": "us-east1-docker.pkg.dev/dev-package-container-96a3ff34/myrepo/nginx@sha256:b50f4e222b2d749d6a999baf30df1d6090d47f2ae855ae80ede69d6dddf5b58c",
            "tags": null,
            "imageSizeBytes": "63125569",
            "uploadTime": "2023-12-07T11:45:45.952415Z",
            "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
            "buildTime": "2023-11-21T16:02:18.199113077Z",
            "updateTime": "2023-12-07T11:45:45.952415Z",
            "projectId": "dev-package-container-96a3ff34",
            "location": "us-east1",
            "repository": "myrepo",
            "image": "nginx",
            "digest": "sha256:b50f4e222b2d749d6a999baf30df1d6090d47f2ae855ae80ede69d6dddf5b58c",
            "gcpImageUrl": "https://us-east1-docker.pkg.dev/dev-package-container-96a3ff34/myrepo/nginx@sha256:b50f4e222b2d749d6a999baf30df1d6090d47f2ae855ae80ede69d6dddf5b58c",
            "__typename": "DockerImage"
          },
          {
            "name": "projects/dev-package-container-96a3ff34/locations/us-east1/repositories/myrepo/dockerImages/nginx@sha256:b6cd7141b3b33ce086013d60e2c7686d95665f516ccd30b618e32c998a4fd334",
            "uri": "us-east1-docker.pkg.dev/dev-package-container-96a3ff34/myrepo/nginx@sha256:b6cd7141b3b33ce086013d60e2c7686d95665f516ccd30b618e32c998a4fd334",
            "tags": null,
            "imageSizeBytes": "74953551",
            "uploadTime": "2023-12-07T11:46:32.507407Z",
            "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
            "buildTime": "2023-11-21T08:21:48.272390286Z",
            "updateTime": "2023-12-07T11:46:32.507407Z",
            "projectId": "dev-package-container-96a3ff34",
            "location": "us-east1",
            "repository": "myrepo",
            "image": "nginx",
            "digest": "sha256:b6cd7141b3b33ce086013d60e2c7686d95665f516ccd30b618e32c998a4fd334",
            "gcpImageUrl": "https://us-east1-docker.pkg.dev/dev-package-container-96a3ff34/myrepo/nginx@sha256:b6cd7141b3b33ce086013d60e2c7686d95665f516ccd30b618e32c998a4fd334",
            "__typename": "DockerImage"
          },
          {
            "name": "projects/dev-package-container-96a3ff34/locations/us-east1/repositories/myrepo/dockerImages/nginx@sha256:c3ce3d388b3e488777a69198642a499c74518db8aab88f59b85fa584dc7a1316",
            "uri": "us-east1-docker.pkg.dev/dev-package-container-96a3ff34/myrepo/nginx@sha256:c3ce3d388b3e488777a69198642a499c74518db8aab88f59b85fa584dc7a1316",
            "tags": null,
            "imageSizeBytes": "64854740",
            "uploadTime": "2023-12-07T11:46:41.029359Z",
            "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
            "buildTime": "2023-11-21T07:07:36.321490180Z",
            "updateTime": "2023-12-07T11:46:41.029359Z",
            "projectId": "dev-package-container-96a3ff34",
            "location": "us-east1",
            "repository": "myrepo",
            "image": "nginx",
            "digest": "sha256:c3ce3d388b3e488777a69198642a499c74518db8aab88f59b85fa584dc7a1316",
            "gcpImageUrl": "https://us-east1-docker.pkg.dev/dev-package-container-96a3ff34/myrepo/nginx@sha256:c3ce3d388b3e488777a69198642a499c74518db8aab88f59b85fa584dc7a1316",
            "__typename": "DockerImage"
          },
          {
            "name": "projects/dev-package-container-96a3ff34/locations/us-east1/repositories/myrepo/dockerImages/nginx@sha256:c76658f0a37d7c04795c727e43f4d1cb40fd5a8738e9b5ea0296ffa86f9a3822",
            "uri": "us-east1-docker.pkg.dev/dev-package-container-96a3ff34/myrepo/nginx@sha256:c76658f0a37d7c04795c727e43f4d1cb40fd5a8738e9b5ea0296ffa86f9a3822",
            "tags": [
              "18750368",
              "4c09fd23",
              "57d3ff35",
              "7470975c",
              "76e855a1",
              "79d362c7",
              "928e2cd0",
              "9f3a39bf",
              "bff4747d",
              "d5176f37",
              "daa126b0",
              "e057d549"
            ],
            "imageSizeBytes": "5473402",
            "uploadTime": "2023-12-07T11:47:08.388607Z",
            "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
            "buildTime": "2023-12-01T09:07:53.251801940Z",
            "updateTime": "2023-12-07T11:59:34.261167Z",
            "projectId": "dev-package-container-96a3ff34",
            "location": "us-east1",
            "repository": "myrepo",
            "image": "nginx",
            "digest": "sha256:c76658f0a37d7c04795c727e43f4d1cb40fd5a8738e9b5ea0296ffa86f9a3822",
            "gcpImageUrl": "https://us-east1-docker.pkg.dev/dev-package-container-96a3ff34/myrepo/nginx@sha256:c76658f0a37d7c04795c727e43f4d1cb40fd5a8738e9b5ea0296ffa86f9a3822",
            "__typename": "DockerImage"
          },
          {
            "name": "projects/dev-package-container-96a3ff34/locations/us-east1/repositories/myrepo/dockerImages/nginx@sha256:e3b434698fb477537d3e9014b4953f340b96858cada6d44a0a5d36e73bd730a4",
            "uri": "us-east1-docker.pkg.dev/dev-package-container-96a3ff34/myrepo/nginx@sha256:e3b434698fb477537d3e9014b4953f340b96858cada6d44a0a5d36e73bd730a4",
            "tags": null,
            "imageSizeBytes": "66206245",
            "uploadTime": "2023-12-07T11:46:22.889951Z",
            "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
            "buildTime": "2023-11-21T17:03:59.748615912Z",
            "updateTime": "2023-12-07T11:46:22.889951Z",
            "projectId": "dev-package-container-96a3ff34",
            "location": "us-east1",
            "repository": "myrepo",
            "image": "nginx",
            "digest": "sha256:e3b434698fb477537d3e9014b4953f340b96858cada6d44a0a5d36e73bd730a4",
            "gcpImageUrl": "https://us-east1-docker.pkg.dev/dev-package-container-96a3ff34/myrepo/nginx@sha256:e3b434698fb477537d3e9014b4953f340b96858cada6d44a0a5d36e73bd730a4",
            "__typename": "DockerImage"
          },
          {
            "name": "projects/dev-package-container-96a3ff34/locations/us-east1/repositories/myrepo/dockerImages/ubuntu@sha256:149d67e29f765f4db62aa52161009e99e389544e25a8f43c8c89d4a445a7ca37",
            "uri": "us-east1-docker.pkg.dev/dev-package-container-96a3ff34/myrepo/ubuntu@sha256:149d67e29f765f4db62aa52161009e99e389544e25a8f43c8c89d4a445a7ca37",
            "tags": null,
            "imageSizeBytes": "29549713",
            "uploadTime": "2023-12-07T11:51:20.576031Z",
            "mediaType": "application/vnd.oci.image.manifest.v1+json",
            "buildTime": "2023-12-01T07:49:50.471660030Z",
            "updateTime": "2023-12-07T11:51:20.576031Z",
            "projectId": "dev-package-container-96a3ff34",
            "location": "us-east1",
            "repository": "myrepo",
            "image": "ubuntu",
            "digest": "sha256:149d67e29f765f4db62aa52161009e99e389544e25a8f43c8c89d4a445a7ca37",
            "gcpImageUrl": "https://us-east1-docker.pkg.dev/dev-package-container-96a3ff34/myrepo/ubuntu@sha256:149d67e29f765f4db62aa52161009e99e389544e25a8f43c8c89d4a445a7ca37",
            "__typename": "DockerImage"
          },
          {
            "name": "projects/dev-package-container-96a3ff34/locations/us-east1/repositories/myrepo/dockerImages/ubuntu@sha256:38f5c03e32f9b3d2349bb3a096462866f8b44566b63a7fc3d5b4c75b55d108e1",
            "uri": "us-east1-docker.pkg.dev/dev-package-container-96a3ff34/myrepo/ubuntu@sha256:38f5c03e32f9b3d2349bb3a096462866f8b44566b63a7fc3d5b4c75b55d108e1",
            "tags": null,
            "imageSizeBytes": "26637680",
            "uploadTime": "2023-12-07T11:51:26.112191Z",
            "mediaType": "application/vnd.oci.image.manifest.v1+json",
            "buildTime": "2023-12-01T07:58:44.402405815Z",
            "updateTime": "2023-12-07T11:51:26.112191Z",
            "projectId": "dev-package-container-96a3ff34",
            "location": "us-east1",
            "repository": "myrepo",
            "image": "ubuntu",
            "digest": "sha256:38f5c03e32f9b3d2349bb3a096462866f8b44566b63a7fc3d5b4c75b55d108e1",
            "gcpImageUrl": "https://us-east1-docker.pkg.dev/dev-package-container-96a3ff34/myrepo/ubuntu@sha256:38f5c03e32f9b3d2349bb3a096462866f8b44566b63a7fc3d5b4c75b55d108e1",
            "__typename": "DockerImage"
          },
          {
            "name": "projects/dev-package-container-96a3ff34/locations/us-east1/repositories/myrepo/dockerImages/ubuntu@sha256:5b5a3f7bd48cdcd8ff523361ae281a4a645b1d7889b5a15856ea540e68fba5c4",
            "uri": "us-east1-docker.pkg.dev/dev-package-container-96a3ff34/myrepo/ubuntu@sha256:5b5a3f7bd48cdcd8ff523361ae281a4a645b1d7889b5a15856ea540e68fba5c4",
            "tags": [
              "5f4cb50cab17ff463edb4ec40e8a210d8cab251f",
              "897014f7dca7387fb0307a71d506bef69a950bc6",
              "9e170b7ac43ce195de7efaec6fbd0cbb1924b75c",
              "b81e7780be3ec83202e907b09fb11c99a2730a05",
              "c02a7f4057fe42de9b151d5d2b9f50014c1fbee2"
            ],
            "imageSizeBytes": "27359937",
            "uploadTime": "2023-12-07T11:51:31.177775Z",
            "mediaType": "application/vnd.oci.image.manifest.v1+json",
            "buildTime": "2023-12-01T07:43:22.065093631Z",
            "updateTime": "2023-12-07T12:01:41.687727Z",
            "projectId": "dev-package-container-96a3ff34",
            "location": "us-east1",
            "repository": "myrepo",
            "image": "ubuntu",
            "digest": "sha256:5b5a3f7bd48cdcd8ff523361ae281a4a645b1d7889b5a15856ea540e68fba5c4",
            "gcpImageUrl": "https://us-east1-docker.pkg.dev/dev-package-container-96a3ff34/myrepo/ubuntu@sha256:5b5a3f7bd48cdcd8ff523361ae281a4a645b1d7889b5a15856ea540e68fba5c4",
            "__typename": "DockerImage"
          },
          {
            "name": "projects/dev-package-container-96a3ff34/locations/us-east1/repositories/myrepo/dockerImages/ubuntu@sha256:8eab65df33a6de2844c9aefd19efe8ddb87b7df5e9185a4ab73af936225685bb",
            "uri": "us-east1-docker.pkg.dev/dev-package-container-96a3ff34/myrepo/ubuntu@sha256:8eab65df33a6de2844c9aefd19efe8ddb87b7df5e9185a4ab73af936225685bb",
            "tags": [
              "latest"
            ],
            "imageSizeBytes": null,
            "uploadTime": "2023-12-07T11:51:43.243055Z",
            "mediaType": "application/vnd.oci.image.index.v1+json",
            "buildTime": null,
            "updateTime": "2023-12-07T11:51:43.243055Z",
            "projectId": "dev-package-container-96a3ff34",
            "location": "us-east1",
            "repository": "myrepo",
            "image": "ubuntu",
            "digest": "sha256:8eab65df33a6de2844c9aefd19efe8ddb87b7df5e9185a4ab73af936225685bb",
            "gcpImageUrl": "https://us-east1-docker.pkg.dev/dev-package-container-96a3ff34/myrepo/ubuntu@sha256:8eab65df33a6de2844c9aefd19efe8ddb87b7df5e9185a4ab73af936225685bb",
            "__typename": "DockerImage"
          },
          {
            "name": "projects/dev-package-container-96a3ff34/locations/us-east1/repositories/myrepo/dockerImages/ubuntu@sha256:b3822149d5c0170039f6f39fc0fda06c2467e4472378b9850bad1792b83e46d5",
            "uri": "us-east1-docker.pkg.dev/dev-package-container-96a3ff34/myrepo/ubuntu@sha256:b3822149d5c0170039f6f39fc0fda06c2467e4472378b9850bad1792b83e46d5",
            "tags": [
              "02be358134ee64eb35e165d3fd9dc1a1b7ab16223f73301042f91252d4cc1b51",
              "0a4ba787a0b1826a131e5420d9332a986de74b52f1e9ebfc29782cbc2a9946c8",
              "228301dd0dc525fca7ea9bc51d2bb6e21f4c3fb05035a2860aa6dd5b3f54ec28"
            ],
            "imageSizeBytes": "34530409",
            "uploadTime": "2023-12-07T11:51:36.975599Z",
            "mediaType": "application/vnd.oci.image.manifest.v1+json",
            "buildTime": "2023-12-01T08:12:04.008779480Z",
            "updateTime": "2023-12-07T11:57:00.854863Z",
            "projectId": "dev-package-container-96a3ff34",
            "location": "us-east1",
            "repository": "myrepo",
            "image": "ubuntu",
            "digest": "sha256:b3822149d5c0170039f6f39fc0fda06c2467e4472378b9850bad1792b83e46d5",
            "gcpImageUrl": "https://us-east1-docker.pkg.dev/dev-package-container-96a3ff34/myrepo/ubuntu@sha256:b3822149d5c0170039f6f39fc0fda06c2467e4472378b9850bad1792b83e46d5",
            "__typename": "DockerImage"
          },
          {
            "name": "projects/dev-package-container-96a3ff34/locations/us-east1/repositories/myrepo/dockerImages/ubuntu@sha256:f41668699eb7c917d00f9cd97fdebe746eb34e6331a74c7995370bafd938b048",
            "uri": "us-east1-docker.pkg.dev/dev-package-container-96a3ff34/myrepo/ubuntu@sha256:f41668699eb7c917d00f9cd97fdebe746eb34e6331a74c7995370bafd938b048",
            "tags": null,
            "imageSizeBytes": "28028761",
            "uploadTime": "2023-12-07T11:51:42.834463Z",
            "mediaType": "application/vnd.oci.image.manifest.v1+json",
            "buildTime": "2023-12-01T08:11:22.867558383Z",
            "updateTime": "2023-12-07T11:51:42.834463Z",
            "projectId": "dev-package-container-96a3ff34",
            "location": "us-east1",
            "repository": "myrepo",
            "image": "ubuntu",
            "digest": "sha256:f41668699eb7c917d00f9cd97fdebe746eb34e6331a74c7995370bafd938b048",
            "gcpImageUrl": "https://us-east1-docker.pkg.dev/dev-package-container-96a3ff34/myrepo/ubuntu@sha256:f41668699eb7c917d00f9cd97fdebe746eb34e6331a74c7995370bafd938b048",
            "__typename": "DockerImage"
          }
        ],
        "count": 27,
        "projectId": "dev-package-container-96a3ff34",
        "repository": "myrepo",
        "gcpRepositoryUrl": "https://console.cloud.google.com/artifacts/docker/dev-package-container-96a3ff34/us-east1/myrepo",
        "pageInfo": {
          "endCursor": "nextPageToken",
          "startCursor": null,
          "hasNextPage": true,
          "hasPreviousPage": false,
          "__typename": "PageInfo"
        }
      }
    }
  }
}

Plan

  1. New Google Artifact Registry Project Integration (#425066 - closed)
  2. GAR Integration: Custom client class (#425147 - closed)
  3. GraphQL: get GAR artifacts from project. (👈 this issue)
  4. GraphQL: get GAR artifact details query (#425150 - closed)
  5. GAR Integration: Add predefined CI variables (#425153 - closed)
  6. GAR integration: frontend menu entry and list o... (#425154 - closed)
  7. GAR integration: frontend artifact details page (#425157 - closed)
  8. GAR integration documentation (#425158 - closed)
Edited by Dzmitry (Dima) Meshcharakou