From f1e5cacd0c1d8b56ff517ee3baa2f48a0dd5a3b2 Mon Sep 17 00:00:00 2001 From: Jeppe B <2jepp9350@gmail.com> Date: Mon, 1 Jun 2026 20:53:10 +0200 Subject: [PATCH] Pin gateway auto-provision deployments to source commit --- services/nginx/app/classes/coolify_manager.php | 11 ++++++++--- .../app/tests/Unit/Coolify/CoolifyManagerTest.php | 2 ++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/services/nginx/app/classes/coolify_manager.php b/services/nginx/app/classes/coolify_manager.php index e89c0931..be98eb41 100644 --- a/services/nginx/app/classes/coolify_manager.php +++ b/services/nginx/app/classes/coolify_manager.php @@ -1926,13 +1926,14 @@ class coolify_manager ], $actorUserId); } - $deployment = $releaseManager->startDeployment([ + $sourceCommitSha = trim((string)($sourceTarget['latest_deployment_commit_sha'] ?? '')); + $deploymentInput = [ 'target_id' => (int)($deploymentTarget['id'] ?? 0), 'channel_id' => (int)$sourceTarget['channel_id'], 'app' => $app, 'repository' => (string)($sourceTarget['repository'] ?? ''), 'branch' => (string)($sourceTarget['branch'] ?? 'master'), - 'commit_mode' => 'latest', + 'commit_mode' => $sourceCommitSha === '' ? 'latest' : 'specific', 'version_label' => $this->gatewayRouteProvisionVersionLabel($sourceTarget), 'deployed_url' => $sourcePublicUrl, 'metadata' => [ @@ -1942,7 +1943,11 @@ class coolify_manager 'server_uuid' => $serverUuid, 'app' => $app, ], - ], $actorUserId); + ]; + if ($sourceCommitSha !== '') { + $deploymentInput['commit_sha'] = $sourceCommitSha; + } + $deployment = $releaseManager->startDeployment($deploymentInput, $actorUserId); if ((string)($deployment['status'] ?? '') !== 'deployed') { $errors[] = array_replace($action, [ diff --git a/services/nginx/app/tests/Unit/Coolify/CoolifyManagerTest.php b/services/nginx/app/tests/Unit/Coolify/CoolifyManagerTest.php index 180dd145..901ec8b7 100644 --- a/services/nginx/app/tests/Unit/Coolify/CoolifyManagerTest.php +++ b/services/nginx/app/tests/Unit/Coolify/CoolifyManagerTest.php @@ -611,6 +611,8 @@ it('defines Coolify schema, route permissions, and replication integration hooks expect($manager)->toContain('gateway_route_autoprovision'); expect($manager)->toContain('upsertDeploymentTarget'); expect($manager)->toContain('startDeployment'); + expect($manager)->toContain("'commit_mode' => \$sourceCommitSha === '' ? 'latest' : 'specific'"); + expect($manager)->toContain("\$deploymentInput['commit_sha'] = \$sourceCommitSha;"); expect($manager)->toContain('verifyGatewayRoutes'); expect($manager)->toContain('bootstrapGatewayCertificates'); expect($manager)->toContain('setLoadBalancerIpTargets');