From d589729d53b3701a84383651de5ae5bd6b4a5017 Mon Sep 17 00:00:00 2001 From: Marco Nenciarini Date: Mon, 12 Jan 2026 14:41:44 +0100 Subject: [PATCH] fix(e2e): pin emulator versions by SHA to prevent CI failures Pin all e2e test emulator images to specific SHA256 digests to ensure immutability and prevent unexpected breakage from upstream changes: - Azurite (Azure): 3.35.0 @sha256:647c63a9... - MinIO (S3): RELEASE.2025-09-07T16-13-09Z @sha256:14cea493... - fake-gcs-server (GCS): 1.52.3 @sha256:666f86b8... All pinned SHAs match the current :latest tag, ensuring we're using the same images that were previously tested. Updated renovate configuration to track digest-based updates while preserving version information in comments for context. Signed-off-by: Marco Nenciarini --- renovate.json5 | 9 +++++++++ test/e2e/internal/objectstore/azurite.go | 5 +++-- test/e2e/internal/objectstore/fakegcsserver.go | 4 +++- test/e2e/internal/objectstore/minio.go | 5 +++-- 4 files changed, 18 insertions(+), 5 deletions(-) diff --git a/renovate.json5 b/renovate.json5 index e74b9f7..bc56ed2 100644 --- a/renovate.json5 +++ b/renovate.json5 @@ -35,6 +35,15 @@ '# renovate: datasource=(?[a-z-.]+?) depName=(?[^\\s]+?)(?: (?:lookupName|packageName)=(?[^\\s]+?))?(?: versioning=(?[^\\s]+?))?(?: extractVersion=(?[^\\s]+?))?\\s+[A-Za-z0-9_]+?_VERSION\\s*:\\s*["\']?(?.+?)["\']?\\s', ], }, + { + customType: 'regex', + managerFilePatterns: [ + '\\.go$', + ], + matchStrings: [ + '// renovate: datasource=(?[a-z-.]+?) depName=(?[^\\s]+?)(?: versioning=(?[^\\s]+?))?\\s+(?:// Version: (?[^\\s]+?)\\s+)?Image:\\s*"[^@]+@(?sha256:[a-f0-9]+)"', + ], + }, { customType: 'regex', managerFilePatterns: [ diff --git a/test/e2e/internal/objectstore/azurite.go b/test/e2e/internal/objectstore/azurite.go index 7ce1b9a..9b23ffd 100644 --- a/test/e2e/internal/objectstore/azurite.go +++ b/test/e2e/internal/objectstore/azurite.go @@ -71,8 +71,9 @@ func newAzuriteDeployment(namespace, name string) *appsv1.Deployment { Containers: []corev1.Container{ { Name: name, - // TODO: renovate the image - Image: "mcr.microsoft.com/azure-storage/azurite", + // renovate: datasource=docker depName=mcr.microsoft.com/azure-storage/azurite versioning=docker + // Version: 3.35.0 + Image: "mcr.microsoft.com/azure-storage/azurite@sha256:647c63a91102a9d8e8000aab803436e1fc85fbb285e7ce830a82ee5d6661cf37", Ports: []corev1.ContainerPort{ { ContainerPort: 10000, diff --git a/test/e2e/internal/objectstore/fakegcsserver.go b/test/e2e/internal/objectstore/fakegcsserver.go index 46d5320..d928cb4 100644 --- a/test/e2e/internal/objectstore/fakegcsserver.go +++ b/test/e2e/internal/objectstore/fakegcsserver.go @@ -71,7 +71,9 @@ func newGCSDeployment(namespace, name string) *appsv1.Deployment { Containers: []corev1.Container{ { Name: name, - Image: "fsouza/fake-gcs-server:latest", + // renovate: datasource=docker depName=fsouza/fake-gcs-server versioning=docker + // Version: 1.52.3 + Image: "fsouza/fake-gcs-server@sha256:666f86b873120818b10a5e68d99401422fcf8b00c1f27fe89599c35236f48b4c", Ports: []corev1.ContainerPort{ { ContainerPort: 4443, diff --git a/test/e2e/internal/objectstore/minio.go b/test/e2e/internal/objectstore/minio.go index 6dc2d9f..654103b 100644 --- a/test/e2e/internal/objectstore/minio.go +++ b/test/e2e/internal/objectstore/minio.go @@ -71,8 +71,9 @@ func newMinioDeployment(namespace, name string) *appsv1.Deployment { Containers: []corev1.Container{ { Name: name, - // TODO: renovate the image - Image: "minio/minio:latest", + // renovate: datasource=docker depName=minio/minio versioning=docker + // Version: RELEASE.2025-09-07T16-13-09Z + Image: "minio/minio@sha256:14cea493d9a34af32f524e538b8346cf79f3321eff8e708c1e2960462bd8936e", Args: []string{"server", "/data"}, Ports: []corev1.ContainerPort{ {