From ac05c00bd612b069f8f6463e5af388fc3027460b Mon Sep 17 00:00:00 2001 From: Tanya Date: Thu, 22 Jan 2026 11:40:16 -0500 Subject: [PATCH] chore: Improve CI workflow with retry logic for package installation This commit enhances the CI workflow by adding retry logic for package installation in the Debian environment. It addresses transient issues with Debian mirror sync by allowing up to three attempts to install necessary packages, improving the reliability of the CI process. Additionally, it cleans the apt cache before retrying to ensure a fresh attempt. Also, it removes unused local patterns configuration from the Next.js setup and adds an unoptimized prop to the PhotoGrid component for better image handling based on the URL state. --- .gitea/workflows/ci.yml | 29 ++++++++++++++++++++---- viewer-frontend/components/PhotoGrid.tsx | 1 + viewer-frontend/next.config.ts | 7 +----- 3 files changed, 26 insertions(+), 11 deletions(-) diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index e45e09d..5767c8b 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -618,11 +618,30 @@ jobs: run: | # Install Python 3.12 using pyenv (required for modern type hints like str | None) # Debian Bullseye doesn't have Python 3.12 in default repos, so we use pyenv - apt-get update && apt-get install -y \ - make build-essential libssl-dev zlib1g-dev \ - libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \ - libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev \ - libffi-dev liblzma-dev git + # Retry logic for transient Debian mirror sync issues + MAX_RETRIES=3 + RETRY_COUNT=0 + while [ $RETRY_COUNT -lt $MAX_RETRIES ]; do + if apt-get update && apt-get install -y --fix-missing \ + make build-essential libssl-dev zlib1g-dev \ + libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \ + libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev \ + libffi-dev liblzma-dev git; then + echo "✅ Package installation succeeded" + break + else + RETRY_COUNT=$((RETRY_COUNT + 1)) + if [ $RETRY_COUNT -lt $MAX_RETRIES ]; then + echo "⚠️ Package installation failed (attempt $RETRY_COUNT/$MAX_RETRIES), retrying in 5 seconds..." + sleep 5 + # Clear apt cache and retry + apt-get clean + else + echo "❌ Package installation failed after $MAX_RETRIES attempts" + exit 1 + fi + fi + done # Install pyenv export PYENV_ROOT="/opt/pyenv" diff --git a/viewer-frontend/components/PhotoGrid.tsx b/viewer-frontend/components/PhotoGrid.tsx index 5319773..7c03270 100644 --- a/viewer-frontend/components/PhotoGrid.tsx +++ b/viewer-frontend/components/PhotoGrid.tsx @@ -626,6 +626,7 @@ export function PhotoGrid({ className="object-contain bg-black/5 transition-transform duration-300 group-hover:scale-105" sizes="(max-width: 640px) 50vw, (max-width: 1024px) 33vw, 20vw" priority={index < 9} + unoptimized={!isUrl(photo.path)} onLoad={(e) => !isVideoPhoto && handleImageLoad(photo.id, e.currentTarget)} />
diff --git a/viewer-frontend/next.config.ts b/viewer-frontend/next.config.ts index 4147b4b..384a05f 100644 --- a/viewer-frontend/next.config.ts +++ b/viewer-frontend/next.config.ts @@ -17,12 +17,7 @@ const nextConfig: NextConfig = { // }, // Add other CDN or image hosting domains as needed ], - // Configure local patterns for API routes with query strings - localPatterns: [ - { - pathname: '/api/photos/**/image', - }, - ], + // Enable image optimization in production // In development, images are unoptimized for faster iteration unoptimized: process.env.NODE_ENV === 'development', -- 2.49.1