chore: Improve CI workflow with retry logic for package installation #6

Merged
tanyar09 merged 1 commits from fix/ci-apt-retry-logic into dev 2026-01-22 13:50:50 -05:00
3 changed files with 26 additions and 11 deletions
Showing only changes of commit ac05c00bd6 - Show all commits

View File

@ -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"

View File

@ -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)}
/>
<div className="absolute inset-0 bg-black/0 transition-colors group-hover:bg-black/10" />

View File

@ -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',