From fa28e3580a63e747303da7d6eaa5003e2da4c6e0 Mon Sep 17 00:00:00 2001 From: Michael Schiemer Date: Sat, 1 Nov 2025 22:06:12 +0100 Subject: [PATCH] fix(ci): add image tag fallback logic and code style fixes - Add fallback to 'latest' tag when build fails - Add fallback mechanism when pulling specific image tag fails - Fix code style: move opening brace in ObjectInfo - Remove unused comment in ObjectStorage --- .gitea/workflows/build-image.yml | 25 +++++++++++++++++++++---- src/Framework/Storage/ObjectInfo.php | 3 ++- src/Framework/Storage/ObjectStorage.php | 1 - 3 files changed, 23 insertions(+), 6 deletions(-) diff --git a/.gitea/workflows/build-image.yml b/.gitea/workflows/build-image.yml index 94704b58..714a2e14 100644 --- a/.gitea/workflows/build-image.yml +++ b/.gitea/workflows/build-image.yml @@ -832,8 +832,13 @@ jobs: DEPLOYMENT_HOST="${{ env.DEPLOYMENT_HOST }}" REGISTRY="${{ env.REGISTRY }}" IMAGE_NAME="${{ env.IMAGE_NAME }}" + BUILD_RESULT="${{ needs.build.result }}" IMAGE_TAG="${{ needs.build.outputs.image_tag || 'latest' }}" + if [ "$BUILD_RESULT" != "success" ]; then + IMAGE_TAG="latest" + fi + if [ -z "$IMAGE_TAG" ] || [ "$IMAGE_TAG" = "null" ]; then IMAGE_TAG="latest" fi @@ -863,10 +868,22 @@ jobs: --password-stdin || echo "⚠️ Registry login failed, continuing..." echo "📥 Pulling image ${FULL_IMAGE}..." - docker pull ${FULL_IMAGE} || { - echo "❌ Failed to pull image ${FULL_IMAGE}" - exit 1 - } + if ! docker pull ${FULL_IMAGE}; then + if [ "${IMAGE_TAG}" != "latest" ]; then + echo "⚠️ Failed to pull ${FULL_IMAGE}, falling back to :latest" + IMAGE_TAG="latest" + FULL_IMAGE="${REGISTRY}/${IMAGE_NAME}:${IMAGE_TAG}" + if docker pull ${FULL_IMAGE}; then + echo "ℹ️ Using fallback image ${FULL_IMAGE}" + else + echo "❌ Failed to pull fallback image ${FULL_IMAGE}" + exit 1 + fi + else + echo "❌ Failed to pull image ${FULL_IMAGE}" + exit 1 + fi + fi # If docker-compose.yml doesn't exist, it will be created from repo if [ ! -f docker-compose.yml ]; then diff --git a/src/Framework/Storage/ObjectInfo.php b/src/Framework/Storage/ObjectInfo.php index bb6e36de..42521a55 100644 --- a/src/Framework/Storage/ObjectInfo.php +++ b/src/Framework/Storage/ObjectInfo.php @@ -3,7 +3,8 @@ declare(strict_types=1); namespace App\Framework\Storage; -final readonly class ObjectInfo { +final readonly class ObjectInfo +{ public function __construct( public string $bucket, public string $key, diff --git a/src/Framework/Storage/ObjectStorage.php b/src/Framework/Storage/ObjectStorage.php index 0471a925..3043935a 100644 --- a/src/Framework/Storage/ObjectStorage.php +++ b/src/Framework/Storage/ObjectStorage.php @@ -10,7 +10,6 @@ interface ObjectStorage public function head(string $bucket, string $key): ObjectInfo; public function delete(string $bucket, string $key): void; public function exists(string $bucket, string $key): bool; - // Links public function url(string $bucket, string $key): ?string; // öffentlich, wenn möglich public function temporaryUrl(string $bucket, string $key, \DateInterval $ttl, array $opts = []): string;