feat: Improve error handling in loadComposeFile method

This commit is contained in:
Andras Bacsai 2024-07-15 16:39:40 +02:00
parent 893339fc8e
commit 4225ec7060

View File

@ -1081,24 +1081,30 @@ public function loadComposeFile($isInit = false)
'git read-tree -mu HEAD', 'git read-tree -mu HEAD',
"cat .$workdir$composeFile", "cat .$workdir$composeFile",
]); ]);
$composeFileContent = instant_remote_process($commands, $this->destination->server, false); try {
if (! $composeFileContent) { $composeFileContent = instant_remote_process($commands, $this->destination->server);
} catch (\Exception $e) {
if (str($e->getMessage())->contains('No such file')) {
throw new \RuntimeException("Docker Compose file not found at: $workdir$composeFile<br><br>Check if you used the right extension (.yaml or .yml) in the compose file name.");
}
if (str($e->getMessage())->contains('fatal: repository') && str($e->getMessage())->contains('does not exist')) {
if ($this->deploymentType() === 'deploy_key') {
throw new \RuntimeException('Your deploy key does not have access to the repository. Please check your deploy key and try again.');
}
throw new \RuntimeException('Repository does not exist. Please check your repository URL and try again.');
}
throw new \RuntimeException($e->getMessage());
} finally {
$this->docker_compose_location = $initialDockerComposeLocation; $this->docker_compose_location = $initialDockerComposeLocation;
$this->save(); $this->save();
$commands = collect([ $commands = collect([
"rm -rf /tmp/{$uuid}", "rm -rf /tmp/{$uuid}",
]); ]);
instant_remote_process($commands, $this->destination->server, false); instant_remote_process($commands, $this->destination->server, false);
throw new \RuntimeException("Docker Compose file not found at: $workdir$composeFile<br><br>Check if you used the right extension (.yaml or .yml) in the compose file name."); }
} else { if ($composeFileContent) {
$this->docker_compose_raw = $composeFileContent; $this->docker_compose_raw = $composeFileContent;
$this->save(); $this->save();
}
$commands = collect([
"rm -rf /tmp/{$uuid}",
]);
instant_remote_process($commands, $this->destination->server, false);
$parsedServices = $this->parseCompose(); $parsedServices = $this->parseCompose();
if ($this->docker_compose_domains) { if ($this->docker_compose_domains) {
$json = collect(json_decode($this->docker_compose_domains)); $json = collect(json_decode($this->docker_compose_domains));
@ -1120,6 +1126,10 @@ public function loadComposeFile($isInit = false)
'parsedServices' => $parsedServices, 'parsedServices' => $parsedServices,
'initialDockerComposeLocation' => $this->docker_compose_location, 'initialDockerComposeLocation' => $this->docker_compose_location,
]; ];
} else {
throw new \RuntimeException("Docker Compose file not found at: $workdir$composeFile<br><br>Check if you used the right extension (.yaml or .yml) in the compose file name.");
}
} }
public function parseContainerLabels(?ApplicationPreview $preview = null) public function parseContainerLabels(?ApplicationPreview $preview = null)