mirror of
https://github.com/coollabsio/coolify.git
synced 2026-03-11 08:55:47 +00:00
Fix: Add GitLab support to convertGitUrl function with custom port handling
This fixes two issues preventing GitLab deployments with custom SSH ports: 1. Missing GitlabApp import and type declaration in convertGitUrl function - Added 'use App\Models\GitlabApp;' import - Updated function signature to accept 'GithubApp|GitlabApp|null' 2. Custom ports not applied for SCP-style SSH URLs (e.g., git@host:repo.git) - Added logic to extract custom port from source when using SCP-style URLs - GitLab instances with custom SSH ports now work correctly Previously, the function only: - Accepted GithubApp in the type hint, causing runtime errors with GitlabApp - Handled custom ports for HTTP-to-SSH conversion - Didn't apply custom ports when SSH URLs were already provided This fix ensures both GitHub and GitLab apps with custom ports (e.g., 2222) work correctly with SCP-style repository URLs. Fixes deployment errors like: - "convertGitUrl(): Argument #3 must be of type GithubApp|GitlabApp|null, GitlabApp given" - SSH connection failures when GitLab uses non-standard port 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
f64bea3463
commit
b6650a099d
1 changed files with 16 additions and 1 deletions
|
|
@ -8,6 +8,7 @@ use App\Models\ApplicationDeploymentQueue;
|
|||
use App\Models\ApplicationPreview;
|
||||
use App\Models\EnvironmentVariable;
|
||||
use App\Models\GithubApp;
|
||||
use App\Models\GitlabApp;
|
||||
use App\Models\InstanceSettings;
|
||||
use App\Models\LocalFileVolume;
|
||||
use App\Models\LocalPersistentVolume;
|
||||
|
|
@ -3014,7 +3015,7 @@ NGINX;
|
|||
}
|
||||
}
|
||||
|
||||
function convertGitUrl(string $gitRepository, string $deploymentType, ?GithubApp $source = null): array
|
||||
function convertGitUrl(string $gitRepository, string $deploymentType, GithubApp|GitlabApp|null $source = null): array
|
||||
{
|
||||
$repository = $gitRepository;
|
||||
$providerInfo = [
|
||||
|
|
@ -3029,11 +3030,25 @@ function convertGitUrl(string $gitRepository, string $deploymentType, ?GithubApp
|
|||
// Let's try and parse the string to detect if it's a valid SSH string or not
|
||||
preg_match('/((.*?)\:\/\/)?(.*@.*:.*)/', $gitRepository, $sshMatches);
|
||||
|
||||
// Extract custom port from source for GitLab/GitHub apps with custom ports
|
||||
// This handles SCP-style URLs like git@host:repo.git where host uses non-standard port
|
||||
if ($deploymentType === 'deploy_key' && $source && ! empty($sshMatches)) {
|
||||
switch ($source->getMorphClass()) {
|
||||
case \App\Models\GithubApp::class:
|
||||
case \App\Models\GitlabApp::class:
|
||||
if ($source->custom_port !== 22) {
|
||||
$providerInfo['port'] = $source->custom_port;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ($deploymentType === 'deploy_key' && empty($sshMatches) && $source) {
|
||||
// If this happens, the user may have provided an HTTP URL when they needed an SSH one
|
||||
// Let's try and fix that for known Git providers
|
||||
switch ($source->getMorphClass()) {
|
||||
case \App\Models\GithubApp::class:
|
||||
case \App\Models\GitlabApp::class:
|
||||
$providerInfo['host'] = Url::fromString($source->html_url)->getHost();
|
||||
$providerInfo['port'] = $source->custom_port;
|
||||
$providerInfo['user'] = $source->custom_user;
|
||||
|
|
|
|||
Loading…
Reference in a new issue