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