From f001df02bdb64c16eb6089af6ecd549098d7548b Mon Sep 17 00:00:00 2001
From: Sergei Zharinov <zharinov@users.noreply.github.com>
Date: Thu, 31 Aug 2023 19:17:58 +0300
Subject: [PATCH] feat(docker): Support digests obtained from DockerHub
 (#24177)

Co-authored-by: Rhys Arkins <rhys@arkins.net>
---
 lib/modules/datasource/docker/index.spec.ts | 2 ++
 lib/modules/datasource/docker/index.ts      | 2 +-
 lib/modules/datasource/docker/schema.ts     | 7 ++++++-
 3 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/lib/modules/datasource/docker/index.spec.ts b/lib/modules/datasource/docker/index.spec.ts
index 7fe7ca7656..5821751997 100644
--- a/lib/modules/datasource/docker/index.spec.ts
+++ b/lib/modules/datasource/docker/index.spec.ts
@@ -1592,6 +1592,7 @@ describe('modules/datasource/docker/index', () => {
             {
               name: '1.0.0',
               tag_last_pushed: '2021-01-01T00:00:00.000Z',
+              digest: 'aaa',
             },
           ],
         })
@@ -1601,6 +1602,7 @@ describe('modules/datasource/docker/index', () => {
             {
               name: '0.9.0',
               tag_last_pushed: '2020-01-01T00:00:00.000Z',
+              digest: 'bbb',
             },
           ],
         });
diff --git a/lib/modules/datasource/docker/index.ts b/lib/modules/datasource/docker/index.ts
index d10a6c3605..4b6a856ce3 100644
--- a/lib/modules/datasource/docker/index.ts
+++ b/lib/modules/datasource/docker/index.ts
@@ -939,7 +939,7 @@ export class DockerDatasource extends Datasource {
    * This function will filter only tags that contain a semver version
    */
   @cache({
-    namespace: 'datasource-docker-releases',
+    namespace: 'datasource-docker-releases-v2',
     key: ({ registryUrl, packageName }: GetReleasesConfig) => {
       const { registryHost, dockerRepository } = getRegistryRepository(
         packageName,
diff --git a/lib/modules/datasource/docker/schema.ts b/lib/modules/datasource/docker/schema.ts
index 618a38029e..4cc58cfea6 100644
--- a/lib/modules/datasource/docker/schema.ts
+++ b/lib/modules/datasource/docker/schema.ts
@@ -159,14 +159,19 @@ export const DockerHubTag = z
   .object({
     name: z.string(),
     tag_last_pushed: z.string().datetime().nullable().catch(null),
+    digest: z.string().nullable().catch(null),
   })
-  .transform(({ name, tag_last_pushed }) => {
+  .transform(({ name, tag_last_pushed, digest }) => {
     const release: Release = { version: name };
 
     if (tag_last_pushed) {
       release.releaseTimestamp = tag_last_pushed;
     }
 
+    if (digest) {
+      release.newDigest = digest;
+    }
+
     return release;
   });
 
-- 
GitLab