mirror of
https://github.com/vitodeploy/vito.git
synced 2025-07-01 05:56:16 +00:00
refactoring (#116)
- refactoring architecture - fix incomplete ssh logs - code editor for scripts in the app - remove Jobs and SSHCommands
This commit is contained in:
@ -2,9 +2,11 @@
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Actions\Site\Deploy;
|
||||
use App\Actions\Site\UpdateBranch;
|
||||
use App\Actions\Site\UpdateDeploymentScript;
|
||||
use App\Actions\Site\UpdateEnv;
|
||||
use App\Exceptions\DeploymentScriptIsEmptyException;
|
||||
use App\Exceptions\SourceControlIsNotConnected;
|
||||
use App\Facades\Toast;
|
||||
use App\Helpers\HtmxResponse;
|
||||
@ -19,13 +21,15 @@ class ApplicationController extends Controller
|
||||
public function deploy(Server $server, Site $site): HtmxResponse
|
||||
{
|
||||
try {
|
||||
$site->deploy();
|
||||
app(Deploy::class)->run($site);
|
||||
|
||||
Toast::success('Deployment started!');
|
||||
} catch (SourceControlIsNotConnected $e) {
|
||||
Toast::error($e->getMessage());
|
||||
|
||||
return htmx()->redirect(route('source-controls'));
|
||||
} catch (DeploymentScriptIsEmptyException) {
|
||||
Toast::error('Deployment script is empty!');
|
||||
}
|
||||
|
||||
return htmx()->back();
|
||||
@ -33,7 +37,7 @@ public function deploy(Server $server, Site $site): HtmxResponse
|
||||
|
||||
public function showDeploymentLog(Server $server, Site $site, Deployment $deployment): RedirectResponse
|
||||
{
|
||||
return back()->with('content', $deployment->log->content);
|
||||
return back()->with('content', $deployment->log?->getContent());
|
||||
}
|
||||
|
||||
public function updateDeploymentScript(Server $server, Site $site, Request $request): RedirectResponse
|
||||
@ -68,9 +72,9 @@ public function updateEnv(Server $server, Site $site, Request $request): Redirec
|
||||
return back();
|
||||
}
|
||||
|
||||
public function enableAutoDeployment(Server $server, Site $site): RedirectResponse
|
||||
public function enableAutoDeployment(Server $server, Site $site): HtmxResponse
|
||||
{
|
||||
if (! $site->auto_deployment) {
|
||||
if (! $site->isAutoDeployment()) {
|
||||
try {
|
||||
$site->enableAutoDeployment();
|
||||
|
||||
@ -82,12 +86,12 @@ public function enableAutoDeployment(Server $server, Site $site): RedirectRespon
|
||||
}
|
||||
}
|
||||
|
||||
return back();
|
||||
return htmx()->back();
|
||||
}
|
||||
|
||||
public function disableAutoDeployment(Server $server, Site $site): RedirectResponse
|
||||
public function disableAutoDeployment(Server $server, Site $site): HtmxResponse
|
||||
{
|
||||
if ($site->auto_deployment) {
|
||||
if ($site->isAutoDeployment()) {
|
||||
try {
|
||||
$site->disableAutoDeployment();
|
||||
|
||||
@ -99,6 +103,6 @@ public function disableAutoDeployment(Server $server, Site $site): RedirectRespo
|
||||
}
|
||||
}
|
||||
|
||||
return back();
|
||||
return htmx()->back();
|
||||
}
|
||||
}
|
||||
|
@ -1,15 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\Server;
|
||||
|
||||
class DaemonController extends Controller
|
||||
{
|
||||
public function index(Server $server)
|
||||
{
|
||||
return view('daemons.index', [
|
||||
'server' => $server,
|
||||
]);
|
||||
}
|
||||
}
|
@ -3,11 +3,12 @@
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Actions\Database\CreateBackup;
|
||||
use App\Actions\Database\RestoreBackup;
|
||||
use App\Actions\Database\RunBackup;
|
||||
use App\Facades\Toast;
|
||||
use App\Helpers\HtmxResponse;
|
||||
use App\Models\Backup;
|
||||
use App\Models\BackupFile;
|
||||
use App\Models\Database;
|
||||
use App\Models\Server;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Illuminate\Http\RedirectResponse;
|
||||
@ -27,7 +28,7 @@ public function show(Server $server, Backup $backup): View
|
||||
|
||||
public function run(Server $server, Backup $backup): RedirectResponse
|
||||
{
|
||||
$backup->run();
|
||||
app(RunBackup::class)->run($backup);
|
||||
|
||||
Toast::success('Backup is running.');
|
||||
|
||||
@ -54,14 +55,7 @@ public function destroy(Server $server, Backup $backup): RedirectResponse
|
||||
|
||||
public function restore(Server $server, Backup $backup, BackupFile $backupFile, Request $request): HtmxResponse
|
||||
{
|
||||
$this->validate($request, [
|
||||
'database' => 'required|exists:databases,id',
|
||||
]);
|
||||
|
||||
/** @var Database $database */
|
||||
$database = Database::query()->findOrFail($request->input('database'));
|
||||
|
||||
$backupFile->restore($database);
|
||||
app(RestoreBackup::class)->restore($backupFile, $request->input());
|
||||
|
||||
Toast::success('Backup restored successfully.');
|
||||
|
||||
|
@ -2,9 +2,11 @@
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Actions\Site\Deploy;
|
||||
use App\Exceptions\SourceControlIsNotConnected;
|
||||
use App\Facades\Notifier;
|
||||
use App\Models\GitHook;
|
||||
use App\Models\ServerLog;
|
||||
use App\Notifications\SourceControlDisconnected;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
@ -26,10 +28,16 @@ public function __invoke(Request $request)
|
||||
foreach ($gitHook->actions as $action) {
|
||||
if ($action == 'deploy') {
|
||||
try {
|
||||
$gitHook->site->deploy();
|
||||
app(Deploy::class)->run($gitHook->site);
|
||||
} catch (SourceControlIsNotConnected) {
|
||||
Notifier::send($gitHook->sourceControl, new SourceControlDisconnected($gitHook->sourceControl));
|
||||
} catch (Throwable $e) {
|
||||
ServerLog::log(
|
||||
$gitHook->site->server,
|
||||
'deploy-failed',
|
||||
$e->getMessage(),
|
||||
$gitHook->site
|
||||
);
|
||||
Log::error('git-hook-exception', (array) $e);
|
||||
}
|
||||
}
|
||||
|
@ -3,6 +3,8 @@
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Actions\Queue\CreateQueue;
|
||||
use App\Actions\Queue\DeleteQueue;
|
||||
use App\Actions\Queue\ManageQueue;
|
||||
use App\Facades\Toast;
|
||||
use App\Helpers\HtmxResponse;
|
||||
use App\Models\Queue;
|
||||
@ -34,7 +36,7 @@ public function store(Server $server, Site $site, Request $request): HtmxRespons
|
||||
|
||||
public function action(Server $server, Site $site, Queue $queue, string $action): HtmxResponse
|
||||
{
|
||||
$queue->{$action}();
|
||||
app(ManageQueue::class)->{$action}($queue);
|
||||
|
||||
Toast::success('Queue is about to '.$action);
|
||||
|
||||
@ -43,7 +45,7 @@ public function action(Server $server, Site $site, Queue $queue, string $action)
|
||||
|
||||
public function destroy(Server $server, Site $site, Queue $queue): RedirectResponse
|
||||
{
|
||||
$queue->remove();
|
||||
app(DeleteQueue::class)->delete($queue);
|
||||
|
||||
Toast::success('Queue is being deleted.');
|
||||
|
||||
|
@ -3,6 +3,8 @@
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Actions\SshKey\CreateSshKey;
|
||||
use App\Actions\SshKey\DeleteKeyFromServer;
|
||||
use App\Actions\SshKey\DeployKeyToServer;
|
||||
use App\Facades\Toast;
|
||||
use App\Helpers\HtmxResponse;
|
||||
use App\Models\Server;
|
||||
@ -29,34 +31,29 @@ public function store(Server $server, Request $request): HtmxResponse
|
||||
$request->input()
|
||||
);
|
||||
|
||||
$key->deployTo($server);
|
||||
$request->merge(['key_id' => $key->id]);
|
||||
|
||||
Toast::success('SSH Key added and being deployed to the server.');
|
||||
|
||||
return htmx()->back();
|
||||
return $this->deploy($server, $request);
|
||||
}
|
||||
|
||||
public function destroy(Server $server, SshKey $sshKey): RedirectResponse
|
||||
{
|
||||
$sshKey->deleteFrom($server);
|
||||
app(DeleteKeyFromServer::class)->delete($server, $sshKey);
|
||||
|
||||
Toast::success('SSH Key is being deleted.');
|
||||
Toast::success('SSH Key has been deleted.');
|
||||
|
||||
return back();
|
||||
}
|
||||
|
||||
public function deploy(Server $server, Request $request): HtmxResponse
|
||||
{
|
||||
$this->validate($request, [
|
||||
'key_id' => 'required|exists:ssh_keys,id',
|
||||
]);
|
||||
app(DeployKeyToServer::class)->deploy(
|
||||
$request->user(),
|
||||
$server,
|
||||
$request->input()
|
||||
);
|
||||
|
||||
/** @var SshKey $sshKey */
|
||||
$sshKey = SshKey::query()->findOrFail($request->input('key_id'));
|
||||
|
||||
$sshKey->deployTo($server);
|
||||
|
||||
Toast::success('SSH Key is being deployed to the server.');
|
||||
Toast::success('SSH Key has been deployed to the server.');
|
||||
|
||||
return htmx()->back();
|
||||
}
|
||||
|
@ -3,6 +3,7 @@
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Actions\SSL\CreateSSL;
|
||||
use App\Actions\SSL\DeleteSSL;
|
||||
use App\Facades\Toast;
|
||||
use App\Helpers\HtmxResponse;
|
||||
use App\Models\Server;
|
||||
@ -34,9 +35,9 @@ public function store(Server $server, Site $site, Request $request): HtmxRespons
|
||||
|
||||
public function destroy(Server $server, Site $site, Ssl $ssl): RedirectResponse
|
||||
{
|
||||
$ssl->remove();
|
||||
app(DeleteSSL::class)->delete($ssl);
|
||||
|
||||
Toast::success('SSL certificate is being deleted.');
|
||||
Toast::success('SSL certificate has been deleted.');
|
||||
|
||||
return back();
|
||||
}
|
||||
|
@ -23,7 +23,7 @@ public function show(Server $server, ServerLog $serverLog): RedirectResponse
|
||||
}
|
||||
|
||||
return back()->with([
|
||||
'content' => $serverLog->content,
|
||||
'content' => $serverLog->getContent(),
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
@ -3,6 +3,7 @@
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Actions\Server\EditServer;
|
||||
use App\Actions\Server\RebootServer;
|
||||
use App\Facades\Toast;
|
||||
use App\Helpers\HtmxResponse;
|
||||
use App\Models\Server;
|
||||
@ -40,7 +41,9 @@ public function checkConnection(Server $server): RedirectResponse|HtmxResponse
|
||||
|
||||
public function reboot(Server $server): HtmxResponse
|
||||
{
|
||||
$server->reboot();
|
||||
app(RebootServer::class)->reboot($server);
|
||||
|
||||
Toast::info('Server is rebooting.');
|
||||
|
||||
return htmx()->redirect(back()->getTargetUrl());
|
||||
}
|
||||
|
@ -3,6 +3,7 @@
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Actions\Site\CreateSite;
|
||||
use App\Actions\Site\DeleteSite;
|
||||
use App\Enums\SiteType;
|
||||
use App\Facades\Toast;
|
||||
use App\Helpers\HtmxResponse;
|
||||
@ -51,7 +52,7 @@ public function show(Server $server, Site $site): View
|
||||
|
||||
public function destroy(Server $server, Site $site): RedirectResponse
|
||||
{
|
||||
$site->remove();
|
||||
app(DeleteSite::class)->delete($site);
|
||||
|
||||
Toast::success('Site is being deleted');
|
||||
|
||||
|
Reference in New Issue
Block a user