chore: Improve CI workflow with retry logic for package installation
All checks were successful
CI / skip-ci-check (pull_request) Successful in 1m50s
CI / lint-and-type-check (pull_request) Successful in 2m28s
CI / python-lint (pull_request) Successful in 2m14s
CI / test-backend (pull_request) Successful in 4m8s
CI / build (pull_request) Successful in 4m55s
CI / secret-scanning (pull_request) Successful in 1m58s
CI / dependency-scan (pull_request) Successful in 1m55s
CI / sast-scan (pull_request) Successful in 3m2s
CI / workflow-summary (pull_request) Successful in 1m49s

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.
This commit is contained in:
Tanya 2026-01-22 11:40:16 -05:00
parent 6adc1f4a5c
commit ac05c00bd6
3 changed files with 26 additions and 11 deletions

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