No URL provided, cache will not be downloaded from shared cache server - GitLab 17.5 with MinIO

Sofern Sie GitLab 17.5 mit einem Distributed Cache auf Basis von MinIO einsetzen, ist seit dem GitLab 17.5 Update eine Anpassung der Runner-Konfiguration erforderlich.



Fehlermeldung (Pipeline)

Skipping Git submodules setup
Restoring cache
00:00
Checking cache for ...
No URL provided, cache will not be downloaded from shared cache server. 
Instead a local version of cache will be extracted.                    


Fehlermeldung (Runner)

Okt 18 14:00:00 sXXXX.creolineserver.com gitlab-runner[PID]: 

ERROR: error while generating S3 pre-signed URL error=operation error S3: 
GetObject, failed to resolve service endpoint, endpoint rule error, A region must be set when 
sending requests to S3


Der Fehler entsteht, da die GitLab-Pipeline versucht, eine pre-signed S3 URL zu generieren. Dieser Befehl schlägt allerdings fehl, da der neue AWS SDK v2 for Go Adapter eine REGION Konfiguration benötigt.



Fehlerbehebung

Lösungvariante 1 (Empfohlen)

Fügen Sie in Ihrer GitLab-Runner Umgebungskonfiguration die in MinIO konfigurierte Region als BucketLocation hinzu:

[[runners]]
  name = "sXXXXX.creolineserver.com"

 [runners.cache]
    Type = "s3"
    Shared = true
    [runners.cache.s3]
      ServerAddress = "sXXXX.creoline.cloud"
      AccessKey = "**********"
      SecretKey = "**********"
      BucketName = "gitlab-distributed-cache"

      # [...]

      BucketLocation = "us-east-1"


Sofern Sie in Ihrem Distributed Cache (MiniIO) Server keine Region definiert haben, ist der Standard-Region-Wert: us-east-1.


Falls Sie die MinIO-Region ändern möchten, melden Sie sich im MinIO Webinterface an und navigieren Sie zu MinIO Configuration → Region → Server Location.



Lösungsvariante 2

Fügen Sie in der GitLab-Runner-Umgebungskonfiguration das Feature-Flag FF_USE_LEGACY_S3_CACHE_ADAPTER hinzu:

[[runners]]
  name = "sXXXXX.creolineserver.com"

  # [..]

  environment = ["FF_USE_LEGACY_S3_CACHE_ADAPTER=1"]


Anschließend ist keine Angabe der Region erforderlich und die pre-signed S3 URL kann erneut problemlos generiert werden.



Quellen