From db63089c4949b35c88637b269c2d912b0554cc43 Mon Sep 17 00:00:00 2001 From: Guillaume Delbergue Date: Wed, 21 Oct 2026 11:10:06 +0200 Subject: [PATCH 1/9] =?UTF-8?q?Passage=20=C3=A0=20serversideup/php=20v5.0.?= =?UTF-8?q?1=20pour=20reprendre=20les=20correctifs=20de=20s=C3=A9curit?= =?UTF-8?q?=C3=A9=20PHP?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit serversideup v4.2.1 est figée en PHP 8.4.15 / 8.3.28 (novembre 2025) et la ligne v4 n'est plus reconstruite (v4.5.1 bloquée en 8.4.23). Seule la v5 suit les releases PHP (v5.0.1 = 8.4.26 / 8.3.35 au 14/10/2026). Deux incompatibilités v5 corrigées pour garder le comportement v4 : - CADDY_LOG_FORMAT passe à "auto" en v5, que nos log-level/*.caddyfile passent tel quel à `format` : Caddy refuse de démarrer (module not registered: caddy.logging.encoders.auto). On fige CADDY_LOG_FORMAT=console et CADDY_LOG_OUTPUT=stdout comme en v4. - test-db-connection.php v5 ne prend plus l'argument migration_isolation que notre 50-laravel-automations.sh lui passe : le check DB échouerait au démarrage de toutes les apps avec AUTORUN_ENABLED. On embarque la version v4 du script. Co-Authored-By: Claude Opus 5.5 --- .../lib/laravel/test-db-connection.php | 160 ++++++++++++++++++ src/variations/cli/Dockerfile | 2 +- src/variations/frankenphp/Dockerfile | 9 +- 3 files changed, 168 insertions(+), 3 deletions(-) create mode 100644 src/common/etc/entrypoint.d/lib/laravel/test-db-connection.php diff --git a/src/common/etc/entrypoint.d/lib/laravel/test-db-connection.php b/src/common/etc/entrypoint.d/lib/laravel/test-db-connection.php new file mode 100644 index 0000000..e4817fd --- /dev/null +++ b/src/common/etc/entrypoint.d/lib/laravel/test-db-connection.php @@ -0,0 +1,160 @@ + 5) { + fwrite(STDERR, "Usage: php test-db-connection.php /path/to/app/base/dir [migration_mode] [migration_isolation] [database_connection]\n"); + exit(1); +} + +$appBaseDir = $argv[1]; +$migrationMode = $argc >= 3 ? $argv[2] : 'default'; +$migrationIsolation = $argc >= 4 ? $argv[3] : 'false'; +$databaseConnection = $argc >= 5 ? $argv[4] : null; + +// Validate migration mode +$validModes = ['default', 'fresh', 'refresh']; +if (!in_array($migrationMode, $validModes)) { + fwrite(STDERR, "Error: Invalid migration mode '{$migrationMode}'. Must be one of: " . implode(', ', $validModes) . "\n"); + exit(1); +} + +// Validate migration isolation +$validIsolations = ['true', 'false']; +if (!in_array($migrationIsolation, $validIsolations)) { + fwrite(STDERR, "Error: Invalid migration isolation '{$migrationIsolation}'. Must be one of: " . implode(', ', $validIsolations) . "\n"); + exit(1); +} + +// Validate that the app base directory exists +if (!is_dir($appBaseDir)) { + fwrite(STDERR, "Error: App base directory does not exist: {$appBaseDir}\n"); + exit(1); +} + +// Validate that required Laravel files exist +$vendorAutoload = "{$appBaseDir}/vendor/autoload.php"; +$bootstrapApp = "{$appBaseDir}/bootstrap/app.php"; + +if (!file_exists($vendorAutoload)) { + fwrite(STDERR, "Error: Composer autoload file not found: {$vendorAutoload}\n"); + exit(1); +} + +if (!file_exists($bootstrapApp)) { + fwrite(STDERR, "Error: Laravel bootstrap file not found: {$bootstrapApp}\n"); + exit(1); +} + +// Bootstrap Laravel +try { + require $vendorAutoload; + + $app = require_once $bootstrapApp; + $kernel = $app->make(Illuminate\Contracts\Console\Kernel::class); + $kernel->bootstrap(); + +} catch (Exception $e) { + fwrite(STDERR, "Error bootstrapping Laravel: {$e->getMessage()}\n"); + exit(1); +} + +// Test database connection +try { + // Use specific database connection if provided + $connection = $databaseConnection ? DB::connection($databaseConnection) : DB::connection(); + $driver = $connection->getDriverName(); + + // SQLite special handling + if ($driver === 'sqlite') { + $dbPath = $connection->getDatabaseName(); + + // Handle in-memory SQLite databases + if ($dbPath === ':memory:') { + fwrite(STDOUT, "SQLite in-memory database detected - ready\n"); + exit(0); + } + + $dbDirectory = dirname($dbPath); + + // Check if database file already exists + if (file_exists($dbPath)) { + fwrite(STDOUT, "SQLite database file exists: {$dbPath}\n"); + exit(0); + } + + // Database file doesn't exist - check if directory exists and is writable + if (!is_dir($dbDirectory)) { + fwrite(STDERR, "SQLite database directory does not exist: {$dbDirectory}\n"); + fwrite(STDERR, "Please create the directory before running migrations.\n"); + fwrite(STDERR, "Example: mkdir -p {$dbDirectory}\n"); + exit(1); + } + + if (!is_writable($dbDirectory)) { + fwrite(STDERR, "SQLite database directory is not writable: {$dbDirectory}\n"); + fwrite(STDERR, "Please check directory permissions.\n"); + exit(1); + } + + // For 'fresh' and 'refresh' modes, the database file must already exist + if ($migrationMode === 'fresh' || $migrationMode === 'refresh') { + fwrite(STDERR, "SQLite database file does not exist: {$dbPath}\n"); + fwrite(STDERR, "Migration mode '{$migrationMode}' requires the database file to exist.\n"); + fwrite(STDERR, "Either:\n"); + fwrite(STDERR, " 1. Create the database (ensure it has read and write permissions for your user): touch {$dbPath}\n"); + fwrite(STDERR, " 2. Use AUTORUN_LARAVEL_MIGRATION_MODE=default to let Laravel create it\n"); + exit(1); + } + + // For isolated migrations, the database file must exist (even in default mode) + if ($migrationIsolation === 'true') { + fwrite(STDERR, "SQLite database file does not exist: {$dbPath}\n"); + fwrite(STDERR, "Isolated migrations require the database file to exist before running.\n"); + fwrite(STDERR, "Either:\n"); + fwrite(STDERR, " 1. Create the database (ensure it has read and write permissions for your user): touch {$dbPath}\n"); + fwrite(STDERR, " 2. Set AUTORUN_LARAVEL_MIGRATION_ISOLATION=false to let migrations create it\n"); + exit(1); + } + + // Directory exists and is writable - migrations can create the database file (default mode only) + fwrite(STDOUT, "SQLite database directory is ready - migrations will create database\n"); + exit(0); + } + + // Test connection for other database drivers + $connection->getPdo(); + + if ($connection->getDatabaseName()) { + $connectionName = $databaseConnection ? " ({$databaseConnection})" : ''; + fwrite(STDOUT, "Database connection successful ({$driver}){$connectionName}\n"); + exit(0); + } else { + fwrite(STDERR, "Database name not found\n"); + exit(1); + } + +} catch (Exception $e) { + $connectionName = $databaseConnection ? " ({$databaseConnection})" : ''; + fwrite(STDERR, "Database connection error{$connectionName}: {$e->getMessage()}\n"); + exit(1); +} \ No newline at end of file diff --git a/src/variations/cli/Dockerfile b/src/variations/cli/Dockerfile index a3a90a5..e695512 100644 --- a/src/variations/cli/Dockerfile +++ b/src/variations/cli/Dockerfile @@ -3,7 +3,7 @@ ARG PHP_VERSION='8.5' ARG PHP_VARIATION='cli' ARG BASE_REPO='serversideup/php' ARG TAG_PREFIX='' -ARG IMAGE_VERSION='v4.2.1' +ARG IMAGE_VERSION='v5.0.1' ARG BASE_IMAGE="${BASE_REPO}:${TAG_PREFIX}${PHP_VERSION}-${PHP_VARIATION}-${BASE_OS_VERSION}-${IMAGE_VERSION}" ########## diff --git a/src/variations/frankenphp/Dockerfile b/src/variations/frankenphp/Dockerfile index c4f13ec..b075d0f 100644 --- a/src/variations/frankenphp/Dockerfile +++ b/src/variations/frankenphp/Dockerfile @@ -4,7 +4,7 @@ ARG PHP_VERSION='8.5' ARG PHP_VARIATION='frankenphp' ARG BASE_REPO='serversideup/php' ARG TAG_PREFIX='' -ARG IMAGE_VERSION='v4.2.1' +ARG IMAGE_VERSION='v5.0.1' ARG BASE_IMAGE="${BASE_REPO}:${TAG_PREFIX}${PHP_VERSION}-${PHP_VARIATION}-${BASE_OS_VERSION}-${IMAGE_VERSION}" ######################## @@ -39,6 +39,9 @@ FROM common AS final ARG REPOSITORY_BUILD_VERSION='dev' +# serversideup v5 passe a CADDY_LOG_FORMAT=auto / CADDY_LOG_OUTPUT=stderr. +# Nos log-level/*.caddyfile font `format {$CADDY_LOG_FORMAT}` : "auto" n'est pas +# un encodeur Caddy valide, on garde donc les valeurs v4. ENV \ PHP_VARIABLES_ORDER="GPCS" \ PHP_OPCACHE_PRELOAD="" \ @@ -51,7 +54,9 @@ ENV \ PHP_OPCACHE_JIT_BUFFER_SIZE="64M" \ FRANKENPHP_THREADS=8 \ FRANKENPHP_MAX_THREADS=32 \ - FRANKENPHP_WORKER_THREADS=4 + FRANKENPHP_WORKER_THREADS=4 \ + CADDY_LOG_FORMAT="console" \ + CADDY_LOG_OUTPUT="stdout" LABEL org.opencontainers.image.title="yieldstudio/php (frankenphp)" \ org.opencontainers.image.description="Supercharge your PHP experience. Based off the official PHP images and serversideup/php, yieldstudio/php includes pre-configured PHP extensions and settings for enhanced performance and security. Optimized for Laravel and WordPress." \ From 2fdd460996f4fbc5d53278e4311ef915733b7089 Mon Sep 17 00:00:00 2001 From: Guillaume Delbergue Date: Wed, 21 Oct 2026 11:31:09 +0200 Subject: [PATCH 2/9] Tag serversideup sans version + garde-fou sur la version majeure MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Les tags serversideup -vX.Y.Z sont construits une seule fois, le jour de leur release (v5.0.1 restera en 8.4.26), et serversideup ne sort pas de release pour les correctifs PHP (aucune entre le 28/07 et le 08/10 alors que 8.4.24 à 8.4.26 sont sorties). Seul le tag sans version est reconstruit chaque semaine avec le dernier PHP. Pour ne pas subir une future v6 sans relire ses breaking changes, le build échoue si /etc/serversideup-php-version n'est pas en SERVERSIDEUP_MAJOR (v5). Le build de la matrice avait continue-on-error, ce qui aurait rendu ce garde-fou muet (job vert, image non publiée) : remplacé par fail-fast: false, pour que les autres combinaisons continuent mais que l'échec soit visible. Co-Authored-By: Claude Opus 5.5 --- .../workflows/service_docker-build-and-publish.yml | 3 ++- src/variations/cli/Dockerfile | 14 ++++++++++++-- src/variations/frankenphp/Dockerfile | 14 ++++++++++++-- 3 files changed, 26 insertions(+), 5 deletions(-) diff --git a/.github/workflows/service_docker-build-and-publish.yml b/.github/workflows/service_docker-build-and-publish.yml index 8a03220..835211e 100644 --- a/.github/workflows/service_docker-build-and-publish.yml +++ b/.github/workflows/service_docker-build-and-publish.yml @@ -96,6 +96,8 @@ jobs: needs: setup-matrix runs-on: ubuntu-24.04 strategy: + # Une combinaison en echec ne doit pas annuler les autres, mais doit rester visible. + fail-fast: false matrix: ${{fromJson(needs.setup-matrix.outputs.php-version-map-json)}} steps: @@ -175,7 +177,6 @@ jobs: - name: Build images uses: docker/build-push-action@v6 - continue-on-error: true with: file: src/variations/${{ matrix.php_variation }}/Dockerfile cache-from: type=gha diff --git a/src/variations/cli/Dockerfile b/src/variations/cli/Dockerfile index e695512..885614a 100644 --- a/src/variations/cli/Dockerfile +++ b/src/variations/cli/Dockerfile @@ -3,8 +3,8 @@ ARG PHP_VERSION='8.5' ARG PHP_VARIATION='cli' ARG BASE_REPO='serversideup/php' ARG TAG_PREFIX='' -ARG IMAGE_VERSION='v5.0.1' -ARG BASE_IMAGE="${BASE_REPO}:${TAG_PREFIX}${PHP_VERSION}-${PHP_VARIATION}-${BASE_OS_VERSION}-${IMAGE_VERSION}" +ARG SERVERSIDEUP_MAJOR='v5' +ARG BASE_IMAGE="${BASE_REPO}:${TAG_PREFIX}${PHP_VERSION}-${PHP_VARIATION}-${BASE_OS_VERSION}" ########## # CLI: Main Image @@ -32,6 +32,16 @@ ENV \ USER root +# Tag serversideup sans version : il suit les correctifs PHP (les tags -vX.Y.Z sont figes +# a leur date de release). Garde-fou : le build echoue si serversideup change de version +# majeure, pour relire ses breaking changes avant de monter (cf. passage v4 -> v5). +ARG SERVERSIDEUP_MAJOR +RUN serversideup_version="$(cat /etc/serversideup-php-version)"; \ + case "$serversideup_version" in \ + "${SERVERSIDEUP_MAJOR}".*) ;; \ + *) echo "serversideup/php ${serversideup_version} : version majeure attendue ${SERVERSIDEUP_MAJOR}, relire les breaking changes puis mettre a jour SERVERSIDEUP_MAJOR" >&2; exit 1 ;; \ + esac + # copy our scripts COPY --chmod=755 src/common/ / diff --git a/src/variations/frankenphp/Dockerfile b/src/variations/frankenphp/Dockerfile index b075d0f..046b4cd 100644 --- a/src/variations/frankenphp/Dockerfile +++ b/src/variations/frankenphp/Dockerfile @@ -4,8 +4,8 @@ ARG PHP_VERSION='8.5' ARG PHP_VARIATION='frankenphp' ARG BASE_REPO='serversideup/php' ARG TAG_PREFIX='' -ARG IMAGE_VERSION='v5.0.1' -ARG BASE_IMAGE="${BASE_REPO}:${TAG_PREFIX}${PHP_VERSION}-${PHP_VARIATION}-${BASE_OS_VERSION}-${IMAGE_VERSION}" +ARG SERVERSIDEUP_MAJOR='v5' +ARG BASE_IMAGE="${BASE_REPO}:${TAG_PREFIX}${PHP_VERSION}-${PHP_VARIATION}-${BASE_OS_VERSION}" ######################## # Common @@ -18,6 +18,16 @@ ARG DEPENDENCY_PHP_EXTENSIONS='xml intl gd bcmath exif opentelemetry soap socket USER root +# Tag serversideup sans version : il suit les correctifs PHP (les tags -vX.Y.Z sont figes +# a leur date de release). Garde-fou : le build echoue si serversideup change de version +# majeure, pour relire ses breaking changes avant de monter (cf. passage v4 -> v5). +ARG SERVERSIDEUP_MAJOR +RUN serversideup_version="$(cat /etc/serversideup-php-version)"; \ + case "$serversideup_version" in \ + "${SERVERSIDEUP_MAJOR}".*) ;; \ + *) echo "serversideup/php ${serversideup_version} : version majeure attendue ${SERVERSIDEUP_MAJOR}, relire les breaking changes puis mettre a jour SERVERSIDEUP_MAJOR" >&2; exit 1 ;; \ + esac + COPY --chmod=755 src/common/ / COPY src/variations/frankenphp/etc/frankenphp/ /etc/frankenphp/ From c1170968cf7110b5341d77b0d670e7fd9db2065e Mon Sep 17 00:00:00 2001 From: Guillaume Delbergue Date: Wed, 21 Oct 2026 11:37:44 +0200 Subject: [PATCH 3/9] =?UTF-8?q?Retour=20au=20tag=20serversideup=20v5.0.1?= =?UTF-8?q?=20fig=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit On garde une version fixée : on montera IMAGE_VERSION à la release serversideup qui embarquera le correctif PHP. Le garde-fou sur la version majeure n'a plus d'utilité avec un tag figé. Le remplacement de continue-on-error par fail-fast: false est conservé : un build en échec doit être visible au lieu de laisser un job vert sans image publiée. Co-Authored-By: Claude Opus 5.5 --- src/variations/cli/Dockerfile | 14 ++------------ src/variations/frankenphp/Dockerfile | 14 ++------------ 2 files changed, 4 insertions(+), 24 deletions(-) diff --git a/src/variations/cli/Dockerfile b/src/variations/cli/Dockerfile index 885614a..e695512 100644 --- a/src/variations/cli/Dockerfile +++ b/src/variations/cli/Dockerfile @@ -3,8 +3,8 @@ ARG PHP_VERSION='8.5' ARG PHP_VARIATION='cli' ARG BASE_REPO='serversideup/php' ARG TAG_PREFIX='' -ARG SERVERSIDEUP_MAJOR='v5' -ARG BASE_IMAGE="${BASE_REPO}:${TAG_PREFIX}${PHP_VERSION}-${PHP_VARIATION}-${BASE_OS_VERSION}" +ARG IMAGE_VERSION='v5.0.1' +ARG BASE_IMAGE="${BASE_REPO}:${TAG_PREFIX}${PHP_VERSION}-${PHP_VARIATION}-${BASE_OS_VERSION}-${IMAGE_VERSION}" ########## # CLI: Main Image @@ -32,16 +32,6 @@ ENV \ USER root -# Tag serversideup sans version : il suit les correctifs PHP (les tags -vX.Y.Z sont figes -# a leur date de release). Garde-fou : le build echoue si serversideup change de version -# majeure, pour relire ses breaking changes avant de monter (cf. passage v4 -> v5). -ARG SERVERSIDEUP_MAJOR -RUN serversideup_version="$(cat /etc/serversideup-php-version)"; \ - case "$serversideup_version" in \ - "${SERVERSIDEUP_MAJOR}".*) ;; \ - *) echo "serversideup/php ${serversideup_version} : version majeure attendue ${SERVERSIDEUP_MAJOR}, relire les breaking changes puis mettre a jour SERVERSIDEUP_MAJOR" >&2; exit 1 ;; \ - esac - # copy our scripts COPY --chmod=755 src/common/ / diff --git a/src/variations/frankenphp/Dockerfile b/src/variations/frankenphp/Dockerfile index 046b4cd..b075d0f 100644 --- a/src/variations/frankenphp/Dockerfile +++ b/src/variations/frankenphp/Dockerfile @@ -4,8 +4,8 @@ ARG PHP_VERSION='8.5' ARG PHP_VARIATION='frankenphp' ARG BASE_REPO='serversideup/php' ARG TAG_PREFIX='' -ARG SERVERSIDEUP_MAJOR='v5' -ARG BASE_IMAGE="${BASE_REPO}:${TAG_PREFIX}${PHP_VERSION}-${PHP_VARIATION}-${BASE_OS_VERSION}" +ARG IMAGE_VERSION='v5.0.1' +ARG BASE_IMAGE="${BASE_REPO}:${TAG_PREFIX}${PHP_VERSION}-${PHP_VARIATION}-${BASE_OS_VERSION}-${IMAGE_VERSION}" ######################## # Common @@ -18,16 +18,6 @@ ARG DEPENDENCY_PHP_EXTENSIONS='xml intl gd bcmath exif opentelemetry soap socket USER root -# Tag serversideup sans version : il suit les correctifs PHP (les tags -vX.Y.Z sont figes -# a leur date de release). Garde-fou : le build echoue si serversideup change de version -# majeure, pour relire ses breaking changes avant de monter (cf. passage v4 -> v5). -ARG SERVERSIDEUP_MAJOR -RUN serversideup_version="$(cat /etc/serversideup-php-version)"; \ - case "$serversideup_version" in \ - "${SERVERSIDEUP_MAJOR}".*) ;; \ - *) echo "serversideup/php ${serversideup_version} : version majeure attendue ${SERVERSIDEUP_MAJOR}, relire les breaking changes puis mettre a jour SERVERSIDEUP_MAJOR" >&2; exit 1 ;; \ - esac - COPY --chmod=755 src/common/ / COPY src/variations/frankenphp/etc/frankenphp/ /etc/frankenphp/ From df7470c069d4c246dab53440a0f9daa421929b0d Mon Sep 17 00:00:00 2001 From: Guillaume Delbergue Date: Wed, 21 Oct 2026 11:57:10 +0200 Subject: [PATCH 4/9] =?UTF-8?q?Matrice=20de=20build=20align=C3=A9e=20sur?= =?UTF-8?q?=20les=20images=20serversideup=20v5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit La v5 ne construit plus PHP 7.4 / 8.0 ni alpine 3.21 / 3.22 pour PHP 8.2+ (remplacés par alpine 3.23 / 3.24 ; PHP 8.1 passe sur alpine 3.22). Ces combinaisons échouaient faute d'image de base, ce qui se voit maintenant que le build n'a plus continue-on-error. Les tags existants restent disponibles, figés à leur dernière build. Les 28 combinaisons de la matrice ont été vérifiées contre les tags serversideup/php *-v5.0.1. Co-Authored-By: Claude Opus 5.5 --- scripts/conf/php-versions-base-config.yml | 38 +++++++++------------- scripts/conf/sail-versions-base-config.yml | 6 ++++ 2 files changed, 21 insertions(+), 23 deletions(-) diff --git a/scripts/conf/php-versions-base-config.yml b/scripts/conf/php-versions-base-config.yml index edb787a..39e36ae 100644 --- a/scripts/conf/php-versions-base-config.yml +++ b/scripts/conf/php-versions-base-config.yml @@ -9,57 +9,43 @@ php_variations: - "8.2" php_versions: - - major: "7" - minor_versions: - - minor: "7.4" - base_os: - - name: alpine3.16 - - name: bullseye - patch_versions: - - 7.4.33 - major: "8" minor_versions: - - minor: "8.0" - base_os: - - name: alpine3.16 - - name: bullseye - patch_versions: - - 8.0.30 - minor: "8.1" base_os: - - name: alpine3.21 + - name: alpine3.22 - name: bookworm - name: trixie patch_versions: # - 8.1.28 # Pull latest from Official PHP source - minor: "8.2" base_os: - - name: alpine3.21 - - name: alpine3.22 + - name: alpine3.23 + - name: alpine3.24 - name: bookworm - name: trixie patch_versions: # - 8.2.18 # Pull latest from Official PHP source - minor: "8.3" base_os: - - name: alpine3.21 - - name: alpine3.22 + - name: alpine3.23 + - name: alpine3.24 - name: bookworm - name: trixie patch_versions: # - 8.3.6 # Pull latest from Official PHP source - minor: "8.4" base_os: - - name: alpine3.21 - - name: alpine3.22 + - name: alpine3.23 + - name: alpine3.24 - name: bookworm - name: trixie patch_versions: # - 8.4.1 # Pull latest from Official PHP source - minor: "8.5" base_os: - - name: alpine3.21 - - name: alpine3.22 + - name: alpine3.23 + - name: alpine3.24 - name: bookworm - name: trixie patch_versions: @@ -89,6 +75,12 @@ operating_systems: - name: "Alpine 3.22" version: alpine3.22 number: 3.22 + - name: "Alpine 3.23" + version: alpine3.23 + number: 3.23 + - name: "Alpine 3.24" + version: alpine3.24 + number: 3.24 - family: debian default: true versions: diff --git a/scripts/conf/sail-versions-base-config.yml b/scripts/conf/sail-versions-base-config.yml index 988813f..4fbb084 100644 --- a/scripts/conf/sail-versions-base-config.yml +++ b/scripts/conf/sail-versions-base-config.yml @@ -48,6 +48,12 @@ operating_systems: - name: "Alpine 3.22" version: alpine3.22 number: 3.22 + - name: "Alpine 3.23" + version: alpine3.23 + number: 3.23 + - name: "Alpine 3.24" + version: alpine3.24 + number: 3.24 - family: debian default: true versions: From 9074edbfee700fb6dd15d11adf62706a0ee74cce Mon Sep 17 00:00:00 2001 From: Guillaume Delbergue Date: Wed, 21 Oct 2026 16:01:15 +0200 Subject: [PATCH 5/9] =?UTF-8?q?Workflow=20de=20publication=20d'images=20en?= =?UTF-8?q?=20version=20PHP=20fix=C3=A9e?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reconstruit serversideup (ref fixée, v5.0.1) depuis ses sources sur php:-zts-, puis notre variation frankenphp, et publie ghcr.io/yieldstudio/php:-frankenphp- (ex. 8.4.27). Permet de livrer un correctif PHP sans attendre une release serversideup. Co-Authored-By: Claude Opus 5.5 --- .../action_publish-images-pinned-php.yml | 133 ++++++++++++++++++ 1 file changed, 133 insertions(+) create mode 100644 .github/workflows/action_publish-images-pinned-php.yml diff --git a/.github/workflows/action_publish-images-pinned-php.yml b/.github/workflows/action_publish-images-pinned-php.yml new file mode 100644 index 0000000..51df826 --- /dev/null +++ b/.github/workflows/action_publish-images-pinned-php.yml @@ -0,0 +1,133 @@ +name: Docker Publish (Pinned PHP Images) + +# Publie ghcr.io/yieldstudio/php:-frankenphp- (ex. 8.4.27-frankenphp-trixie) +# sans attendre une release serversideup : l'image serversideup est reconstruite depuis son +# code source (ref fixée) sur l'image PHP officielle de la version demandée, puis notre +# variation frankenphp est construite par-dessus. +# +# Seuls des tags de version complète sont publiés : les tags 8.4-… restent gérés par +# "Docker Publish (Production Images)". Les apps choisissent la version via PHP_BASE_VERSION. + +on: + workflow_dispatch: + inputs: + php-versions: + type: string + required: true + default: '["8.4.27", "8.3.36"]' + description: 'Versions PHP complètes (liste JSON). Elles doivent exister sur Docker Hub en php:-zts-.' + base-os: + type: string + required: true + default: 'trixie' + description: 'OS de base (trixie, bookworm, alpine3.23...).' + serversideup-ref: + type: string + required: true + default: 'v5.0.1' + description: 'Tag serversideup/docker-php dont on reconstruit le code.' + frankenphp-version: + type: string + required: false + default: '' + description: 'Version FrankenPHP à compiler (vide = celle du tag serversideup).' + +permissions: + contents: read + packages: write + +jobs: + publish: + runs-on: ubuntu-24.04 + strategy: + fail-fast: false + matrix: + php_version: ${{ fromJson(inputs.php-versions) }} + env: + PHP_VERSION: ${{ matrix.php_version }} + BASE_OS: ${{ inputs.base-os }} + SERVERSIDEUP_REF: ${{ inputs.serversideup-ref }} + steps: + - name: Vérifier que l'image PHP officielle existe + run: | + set -euo pipefail + tag="${PHP_VERSION}-zts-${BASE_OS}" + code=$(curl -s -o /dev/null -w '%{http_code}' "https://hub.docker.com/v2/repositories/library/php/tags/${tag}/") + if [[ "$code" != "200" ]]; then + echo "::error::php:${tag} n'existe pas (encore) sur Docker Hub (HTTP ${code})." + exit 1 + fi + echo "PHP_MINOR=${PHP_VERSION%.*}" >> "$GITHUB_ENV" + echo "BASE_TAG=ghcr.io/yieldstudio/php-base:${PHP_VERSION}-frankenphp-${BASE_OS}-serversideup-${SERVERSIDEUP_REF}" >> "$GITHUB_ENV" + echo "FINAL_TAG=ghcr.io/yieldstudio/php:${PHP_VERSION}-frankenphp-${BASE_OS}" >> "$GITHUB_ENV" + + - name: Check out code. + uses: actions/checkout@v5 + + - name: Check out serversideup/docker-php + uses: actions/checkout@v5 + with: + repository: serversideup/docker-php + ref: ${{ inputs.serversideup-ref }} + path: .serversideup + + - name: Login to GitHub Container Registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + with: + platforms: linux/amd64,linux/arm64 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Build serversideup (frankenphp) depuis les sources + uses: docker/build-push-action@v6 + with: + context: .serversideup + file: .serversideup/src/variations/frankenphp/Dockerfile + cache-from: type=gha,scope=serversideup-${{ matrix.php_version }}-${{ inputs.base-os }} + cache-to: type=gha,mode=max,scope=serversideup-${{ matrix.php_version }}-${{ inputs.base-os }} + build-args: | + PHP_VERSION=${{ matrix.php_version }} + BASE_OS_VERSION=${{ inputs.base-os }} + REPOSITORY_BUILD_VERSION=${{ inputs.serversideup-ref }}-rebuild-${{ github.run_id }} + ${{ inputs.frankenphp-version != '' && format('FRANKENPHP_VERSION={0}', inputs.frankenphp-version) || '' }} + platforms: linux/amd64,linux/arm64 + pull: true + push: true + tags: ${{ env.BASE_TAG }} + + - name: Build yieldstudio/php (frankenphp) + uses: docker/build-push-action@v6 + with: + file: src/variations/frankenphp/Dockerfile + cache-from: type=gha,scope=yieldstudio-${{ matrix.php_version }}-${{ inputs.base-os }} + cache-to: type=gha,scope=yieldstudio-${{ matrix.php_version }}-${{ inputs.base-os }} + build-args: | + BASE_IMAGE=${{ env.BASE_TAG }} + BASE_OS_VERSION=${{ inputs.base-os }} + PHP_VERSION=${{ env.PHP_MINOR }} + PHP_VARIATION=frankenphp + REPOSITORY_BUILD_VERSION=pinned-${{ matrix.php_version }}-${{ github.run_id }} + platforms: linux/amd64,linux/arm64 + pull: true + push: true + tags: ${{ env.FINAL_TAG }} + + - name: Vérifier la version PHP publiée + run: | + set -euo pipefail + for platform in linux/amd64 linux/arm64; do + got=$(docker run --rm --platform "$platform" --entrypoint php "$FINAL_TAG" -r 'echo PHP_VERSION;') + echo "$platform : PHP $got" + if [[ "$got" != "$PHP_VERSION" ]]; then + echo "::error::$FINAL_TAG ($platform) contient PHP $got au lieu de $PHP_VERSION" + exit 1 + fi + done From 32e039b300a4c6fd1f7e76fb6d65baa98f0ed968 Mon Sep 17 00:00:00 2001 From: Guillaume Delbergue Date: Wed, 21 Oct 2026 16:09:53 +0200 Subject: [PATCH 6/9] =?UTF-8?q?Workflow=20version=20fix=C3=A9e=20:=20image?= =?UTF-8?q?=20serversideup=20officielle=20par=20d=C3=A9faut?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit La base par défaut devient serversideup/php:-frankenphp-- (release officielle, ex. v5.0.2). La reconstruction depuis les sources reste disponible en secours via rebuild-serversideup. Co-Authored-By: Claude Opus 5.5 --- .../action_publish-images-pinned-php.yml | 43 ++++++++++++------- 1 file changed, 28 insertions(+), 15 deletions(-) diff --git a/.github/workflows/action_publish-images-pinned-php.yml b/.github/workflows/action_publish-images-pinned-php.yml index 51df826..8a56f59 100644 --- a/.github/workflows/action_publish-images-pinned-php.yml +++ b/.github/workflows/action_publish-images-pinned-php.yml @@ -1,12 +1,13 @@ name: Docker Publish (Pinned PHP Images) -# Publie ghcr.io/yieldstudio/php:-frankenphp- (ex. 8.4.27-frankenphp-trixie) -# sans attendre une release serversideup : l'image serversideup est reconstruite depuis son -# code source (ref fixée) sur l'image PHP officielle de la version demandée, puis notre -# variation frankenphp est construite par-dessus. +# Publie ghcr.io/yieldstudio/php:-frankenphp- (ex. 8.4.27-frankenphp-trixie), +# un tag de version PHP complete que les apps fixent via PHP_BASE_VERSION. # -# Seuls des tags de version complète sont publiés : les tags 8.4-… restent gérés par -# "Docker Publish (Production Images)". Les apps choisissent la version via PHP_BASE_VERSION. +# Par defaut, la base est l'image officielle serversideup/php:-frankenphp--. +# En secours (rebuild-serversideup), l'image serversideup est reconstruite depuis son code +# source (ref fixee) sur l'image PHP officielle php:-zts-, sans attendre leur release. +# +# Les tags 8.4-... restent geres par "Docker Publish (Production Images)". on: workflow_dispatch: @@ -15,7 +16,7 @@ on: type: string required: true default: '["8.4.27", "8.3.36"]' - description: 'Versions PHP complètes (liste JSON). Elles doivent exister sur Docker Hub en php:-zts-.' + description: 'Versions PHP completes (liste JSON).' base-os: type: string required: true @@ -24,13 +25,17 @@ on: serversideup-ref: type: string required: true - default: 'v5.0.1' - description: 'Tag serversideup/docker-php dont on reconstruit le code.' + default: 'v5.0.2' + description: 'Release serversideup/php (ex. v5.0.2).' + rebuild-serversideup: + type: boolean + default: false + description: 'Secours : reconstruire serversideup depuis ses sources au lieu de prendre leur image.' frankenphp-version: type: string required: false default: '' - description: 'Version FrankenPHP à compiler (vide = celle du tag serversideup).' + description: 'Avec rebuild uniquement : version FrankenPHP a compiler (vide = celle de la ref).' permissions: contents: read @@ -47,24 +52,31 @@ jobs: PHP_VERSION: ${{ matrix.php_version }} BASE_OS: ${{ inputs.base-os }} SERVERSIDEUP_REF: ${{ inputs.serversideup-ref }} + REBUILD: ${{ inputs.rebuild-serversideup }} steps: - - name: Vérifier que l'image PHP officielle existe + - name: Verifier que l'image de base existe run: | set -euo pipefail - tag="${PHP_VERSION}-zts-${BASE_OS}" - code=$(curl -s -o /dev/null -w '%{http_code}' "https://hub.docker.com/v2/repositories/library/php/tags/${tag}/") + if [[ "$REBUILD" == "true" ]]; then + repo=library/php; tag="${PHP_VERSION}-zts-${BASE_OS}" + echo "BASE_TAG=ghcr.io/yieldstudio/php-base:${PHP_VERSION}-frankenphp-${BASE_OS}-serversideup-${SERVERSIDEUP_REF}" >> "$GITHUB_ENV" + else + repo=serversideup/php; tag="${PHP_VERSION}-frankenphp-${BASE_OS}-${SERVERSIDEUP_REF}" + echo "BASE_TAG=serversideup/php:${tag}" >> "$GITHUB_ENV" + fi + code=$(curl -s -o /dev/null -w '%{http_code}' "https://hub.docker.com/v2/repositories/${repo}/tags/${tag}/") if [[ "$code" != "200" ]]; then - echo "::error::php:${tag} n'existe pas (encore) sur Docker Hub (HTTP ${code})." + echo "::error::${repo}:${tag} n'existe pas (encore) sur Docker Hub (HTTP ${code})." exit 1 fi echo "PHP_MINOR=${PHP_VERSION%.*}" >> "$GITHUB_ENV" - echo "BASE_TAG=ghcr.io/yieldstudio/php-base:${PHP_VERSION}-frankenphp-${BASE_OS}-serversideup-${SERVERSIDEUP_REF}" >> "$GITHUB_ENV" echo "FINAL_TAG=ghcr.io/yieldstudio/php:${PHP_VERSION}-frankenphp-${BASE_OS}" >> "$GITHUB_ENV" - name: Check out code. uses: actions/checkout@v5 - name: Check out serversideup/docker-php + if: ${{ inputs.rebuild-serversideup }} uses: actions/checkout@v5 with: repository: serversideup/docker-php @@ -87,6 +99,7 @@ jobs: uses: docker/setup-buildx-action@v3 - name: Build serversideup (frankenphp) depuis les sources + if: ${{ inputs.rebuild-serversideup }} uses: docker/build-push-action@v6 with: context: .serversideup From a6e57b1d72c675bc1b0b4922a4157cfacb0745f6 Mon Sep 17 00:00:00 2001 From: Guillaume Delbergue Date: Wed, 21 Oct 2026 16:16:48 +0200 Subject: [PATCH 7/9] =?UTF-8?q?Revert=20"Workflow=20version=20fix=C3=A9e?= =?UTF-8?q?=20:=20image=20serversideup=20officielle=20par=20d=C3=A9faut"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 32e039b300a4c6fd1f7e76fb6d65baa98f0ed968. --- .../action_publish-images-pinned-php.yml | 43 +++++++------------ 1 file changed, 15 insertions(+), 28 deletions(-) diff --git a/.github/workflows/action_publish-images-pinned-php.yml b/.github/workflows/action_publish-images-pinned-php.yml index 8a56f59..51df826 100644 --- a/.github/workflows/action_publish-images-pinned-php.yml +++ b/.github/workflows/action_publish-images-pinned-php.yml @@ -1,13 +1,12 @@ name: Docker Publish (Pinned PHP Images) -# Publie ghcr.io/yieldstudio/php:-frankenphp- (ex. 8.4.27-frankenphp-trixie), -# un tag de version PHP complete que les apps fixent via PHP_BASE_VERSION. +# Publie ghcr.io/yieldstudio/php:-frankenphp- (ex. 8.4.27-frankenphp-trixie) +# sans attendre une release serversideup : l'image serversideup est reconstruite depuis son +# code source (ref fixée) sur l'image PHP officielle de la version demandée, puis notre +# variation frankenphp est construite par-dessus. # -# Par defaut, la base est l'image officielle serversideup/php:-frankenphp--. -# En secours (rebuild-serversideup), l'image serversideup est reconstruite depuis son code -# source (ref fixee) sur l'image PHP officielle php:-zts-, sans attendre leur release. -# -# Les tags 8.4-... restent geres par "Docker Publish (Production Images)". +# Seuls des tags de version complète sont publiés : les tags 8.4-… restent gérés par +# "Docker Publish (Production Images)". Les apps choisissent la version via PHP_BASE_VERSION. on: workflow_dispatch: @@ -16,7 +15,7 @@ on: type: string required: true default: '["8.4.27", "8.3.36"]' - description: 'Versions PHP completes (liste JSON).' + description: 'Versions PHP complètes (liste JSON). Elles doivent exister sur Docker Hub en php:-zts-.' base-os: type: string required: true @@ -25,17 +24,13 @@ on: serversideup-ref: type: string required: true - default: 'v5.0.2' - description: 'Release serversideup/php (ex. v5.0.2).' - rebuild-serversideup: - type: boolean - default: false - description: 'Secours : reconstruire serversideup depuis ses sources au lieu de prendre leur image.' + default: 'v5.0.1' + description: 'Tag serversideup/docker-php dont on reconstruit le code.' frankenphp-version: type: string required: false default: '' - description: 'Avec rebuild uniquement : version FrankenPHP a compiler (vide = celle de la ref).' + description: 'Version FrankenPHP à compiler (vide = celle du tag serversideup).' permissions: contents: read @@ -52,31 +47,24 @@ jobs: PHP_VERSION: ${{ matrix.php_version }} BASE_OS: ${{ inputs.base-os }} SERVERSIDEUP_REF: ${{ inputs.serversideup-ref }} - REBUILD: ${{ inputs.rebuild-serversideup }} steps: - - name: Verifier que l'image de base existe + - name: Vérifier que l'image PHP officielle existe run: | set -euo pipefail - if [[ "$REBUILD" == "true" ]]; then - repo=library/php; tag="${PHP_VERSION}-zts-${BASE_OS}" - echo "BASE_TAG=ghcr.io/yieldstudio/php-base:${PHP_VERSION}-frankenphp-${BASE_OS}-serversideup-${SERVERSIDEUP_REF}" >> "$GITHUB_ENV" - else - repo=serversideup/php; tag="${PHP_VERSION}-frankenphp-${BASE_OS}-${SERVERSIDEUP_REF}" - echo "BASE_TAG=serversideup/php:${tag}" >> "$GITHUB_ENV" - fi - code=$(curl -s -o /dev/null -w '%{http_code}' "https://hub.docker.com/v2/repositories/${repo}/tags/${tag}/") + tag="${PHP_VERSION}-zts-${BASE_OS}" + code=$(curl -s -o /dev/null -w '%{http_code}' "https://hub.docker.com/v2/repositories/library/php/tags/${tag}/") if [[ "$code" != "200" ]]; then - echo "::error::${repo}:${tag} n'existe pas (encore) sur Docker Hub (HTTP ${code})." + echo "::error::php:${tag} n'existe pas (encore) sur Docker Hub (HTTP ${code})." exit 1 fi echo "PHP_MINOR=${PHP_VERSION%.*}" >> "$GITHUB_ENV" + echo "BASE_TAG=ghcr.io/yieldstudio/php-base:${PHP_VERSION}-frankenphp-${BASE_OS}-serversideup-${SERVERSIDEUP_REF}" >> "$GITHUB_ENV" echo "FINAL_TAG=ghcr.io/yieldstudio/php:${PHP_VERSION}-frankenphp-${BASE_OS}" >> "$GITHUB_ENV" - name: Check out code. uses: actions/checkout@v5 - name: Check out serversideup/docker-php - if: ${{ inputs.rebuild-serversideup }} uses: actions/checkout@v5 with: repository: serversideup/docker-php @@ -99,7 +87,6 @@ jobs: uses: docker/setup-buildx-action@v3 - name: Build serversideup (frankenphp) depuis les sources - if: ${{ inputs.rebuild-serversideup }} uses: docker/build-push-action@v6 with: context: .serversideup From b498a2a373e9c27ec125040581c31ef1460dd2a2 Mon Sep 17 00:00:00 2001 From: Guillaume Delbergue Date: Wed, 21 Oct 2026 16:16:48 +0200 Subject: [PATCH 8/9] =?UTF-8?q?Retire=20le=20workflow=20de=20publication?= =?UTF-8?q?=20en=20version=20fix=C3=A9e?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit On garde le circuit habituel (Docker Publish (Production Images)). Co-Authored-By: Claude Opus 5.5 --- .../action_publish-images-pinned-php.yml | 133 ------------------ 1 file changed, 133 deletions(-) delete mode 100644 .github/workflows/action_publish-images-pinned-php.yml diff --git a/.github/workflows/action_publish-images-pinned-php.yml b/.github/workflows/action_publish-images-pinned-php.yml deleted file mode 100644 index 51df826..0000000 --- a/.github/workflows/action_publish-images-pinned-php.yml +++ /dev/null @@ -1,133 +0,0 @@ -name: Docker Publish (Pinned PHP Images) - -# Publie ghcr.io/yieldstudio/php:-frankenphp- (ex. 8.4.27-frankenphp-trixie) -# sans attendre une release serversideup : l'image serversideup est reconstruite depuis son -# code source (ref fixée) sur l'image PHP officielle de la version demandée, puis notre -# variation frankenphp est construite par-dessus. -# -# Seuls des tags de version complète sont publiés : les tags 8.4-… restent gérés par -# "Docker Publish (Production Images)". Les apps choisissent la version via PHP_BASE_VERSION. - -on: - workflow_dispatch: - inputs: - php-versions: - type: string - required: true - default: '["8.4.27", "8.3.36"]' - description: 'Versions PHP complètes (liste JSON). Elles doivent exister sur Docker Hub en php:-zts-.' - base-os: - type: string - required: true - default: 'trixie' - description: 'OS de base (trixie, bookworm, alpine3.23...).' - serversideup-ref: - type: string - required: true - default: 'v5.0.1' - description: 'Tag serversideup/docker-php dont on reconstruit le code.' - frankenphp-version: - type: string - required: false - default: '' - description: 'Version FrankenPHP à compiler (vide = celle du tag serversideup).' - -permissions: - contents: read - packages: write - -jobs: - publish: - runs-on: ubuntu-24.04 - strategy: - fail-fast: false - matrix: - php_version: ${{ fromJson(inputs.php-versions) }} - env: - PHP_VERSION: ${{ matrix.php_version }} - BASE_OS: ${{ inputs.base-os }} - SERVERSIDEUP_REF: ${{ inputs.serversideup-ref }} - steps: - - name: Vérifier que l'image PHP officielle existe - run: | - set -euo pipefail - tag="${PHP_VERSION}-zts-${BASE_OS}" - code=$(curl -s -o /dev/null -w '%{http_code}' "https://hub.docker.com/v2/repositories/library/php/tags/${tag}/") - if [[ "$code" != "200" ]]; then - echo "::error::php:${tag} n'existe pas (encore) sur Docker Hub (HTTP ${code})." - exit 1 - fi - echo "PHP_MINOR=${PHP_VERSION%.*}" >> "$GITHUB_ENV" - echo "BASE_TAG=ghcr.io/yieldstudio/php-base:${PHP_VERSION}-frankenphp-${BASE_OS}-serversideup-${SERVERSIDEUP_REF}" >> "$GITHUB_ENV" - echo "FINAL_TAG=ghcr.io/yieldstudio/php:${PHP_VERSION}-frankenphp-${BASE_OS}" >> "$GITHUB_ENV" - - - name: Check out code. - uses: actions/checkout@v5 - - - name: Check out serversideup/docker-php - uses: actions/checkout@v5 - with: - repository: serversideup/docker-php - ref: ${{ inputs.serversideup-ref }} - path: .serversideup - - - name: Login to GitHub Container Registry - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Set up QEMU - uses: docker/setup-qemu-action@v3 - with: - platforms: linux/amd64,linux/arm64 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - - name: Build serversideup (frankenphp) depuis les sources - uses: docker/build-push-action@v6 - with: - context: .serversideup - file: .serversideup/src/variations/frankenphp/Dockerfile - cache-from: type=gha,scope=serversideup-${{ matrix.php_version }}-${{ inputs.base-os }} - cache-to: type=gha,mode=max,scope=serversideup-${{ matrix.php_version }}-${{ inputs.base-os }} - build-args: | - PHP_VERSION=${{ matrix.php_version }} - BASE_OS_VERSION=${{ inputs.base-os }} - REPOSITORY_BUILD_VERSION=${{ inputs.serversideup-ref }}-rebuild-${{ github.run_id }} - ${{ inputs.frankenphp-version != '' && format('FRANKENPHP_VERSION={0}', inputs.frankenphp-version) || '' }} - platforms: linux/amd64,linux/arm64 - pull: true - push: true - tags: ${{ env.BASE_TAG }} - - - name: Build yieldstudio/php (frankenphp) - uses: docker/build-push-action@v6 - with: - file: src/variations/frankenphp/Dockerfile - cache-from: type=gha,scope=yieldstudio-${{ matrix.php_version }}-${{ inputs.base-os }} - cache-to: type=gha,scope=yieldstudio-${{ matrix.php_version }}-${{ inputs.base-os }} - build-args: | - BASE_IMAGE=${{ env.BASE_TAG }} - BASE_OS_VERSION=${{ inputs.base-os }} - PHP_VERSION=${{ env.PHP_MINOR }} - PHP_VARIATION=frankenphp - REPOSITORY_BUILD_VERSION=pinned-${{ matrix.php_version }}-${{ github.run_id }} - platforms: linux/amd64,linux/arm64 - pull: true - push: true - tags: ${{ env.FINAL_TAG }} - - - name: Vérifier la version PHP publiée - run: | - set -euo pipefail - for platform in linux/amd64 linux/arm64; do - got=$(docker run --rm --platform "$platform" --entrypoint php "$FINAL_TAG" -r 'echo PHP_VERSION;') - echo "$platform : PHP $got" - if [[ "$got" != "$PHP_VERSION" ]]; then - echo "::error::$FINAL_TAG ($platform) contient PHP $got au lieu de $PHP_VERSION" - exit 1 - fi - done From ddf028b4390b9e52cfb5ec0b49f165ab7dd6144f Mon Sep 17 00:00:00 2001 From: Guillaume Delbergue Date: Wed, 21 Oct 2026 19:53:15 +0200 Subject: [PATCH 9/9] serversideup v5.0.2 : PHP 8.4.27 / 8.3.36 (CVE-2026-109618, CVE-2026-109619) v5.0.2 n'apporte par ailleurs que FrankenPHP 1.13.1 et un changement du Caddyfile serversideup pour Mercure, que notre Caddyfile remplace. Co-Authored-By: Claude Opus 5.5 --- src/variations/cli/Dockerfile | 2 +- src/variations/frankenphp/Dockerfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/variations/cli/Dockerfile b/src/variations/cli/Dockerfile index e695512..354d881 100644 --- a/src/variations/cli/Dockerfile +++ b/src/variations/cli/Dockerfile @@ -3,7 +3,7 @@ ARG PHP_VERSION='8.5' ARG PHP_VARIATION='cli' ARG BASE_REPO='serversideup/php' ARG TAG_PREFIX='' -ARG IMAGE_VERSION='v5.0.1' +ARG IMAGE_VERSION='v5.0.2' ARG BASE_IMAGE="${BASE_REPO}:${TAG_PREFIX}${PHP_VERSION}-${PHP_VARIATION}-${BASE_OS_VERSION}-${IMAGE_VERSION}" ########## diff --git a/src/variations/frankenphp/Dockerfile b/src/variations/frankenphp/Dockerfile index b075d0f..ab93869 100644 --- a/src/variations/frankenphp/Dockerfile +++ b/src/variations/frankenphp/Dockerfile @@ -4,7 +4,7 @@ ARG PHP_VERSION='8.5' ARG PHP_VARIATION='frankenphp' ARG BASE_REPO='serversideup/php' ARG TAG_PREFIX='' -ARG IMAGE_VERSION='v5.0.1' +ARG IMAGE_VERSION='v5.0.2' ARG BASE_IMAGE="${BASE_REPO}:${TAG_PREFIX}${PHP_VERSION}-${PHP_VARIATION}-${BASE_OS_VERSION}-${IMAGE_VERSION}" ########################