mirror of
https://github.com/vitodeploy/vito.git
synced 2025-07-05 16:02:34 +00:00
#591 - sites
This commit is contained in:
@ -4,6 +4,7 @@
|
||||
|
||||
use App\Models\Command;
|
||||
use App\Models\Site;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
|
||||
class CreateCommand
|
||||
{
|
||||
@ -12,6 +13,8 @@ class CreateCommand
|
||||
*/
|
||||
public function create(Site $site, array $input): Command
|
||||
{
|
||||
Validator::make($input, self::rules())->validate();
|
||||
|
||||
$script = new Command([
|
||||
'site_id' => $site->id,
|
||||
'name' => $input['name'],
|
||||
|
@ -7,14 +7,20 @@
|
||||
use App\Models\Site;
|
||||
use App\SSH\Services\PHP\PHP;
|
||||
use App\SSH\Services\Webserver\Webserver;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
use Illuminate\Validation\Rule;
|
||||
|
||||
class DeleteSite
|
||||
{
|
||||
/**
|
||||
* @param array<string, mixed> $input
|
||||
*
|
||||
* @throws SSHError
|
||||
*/
|
||||
public function delete(Site $site): void
|
||||
public function delete(Site $site, array $input): void
|
||||
{
|
||||
$this->validate($site, $input);
|
||||
|
||||
/** @var Service $service */
|
||||
$service = $site->server->webserver();
|
||||
|
||||
@ -35,4 +41,14 @@ public function delete(Site $site): void
|
||||
|
||||
$site->delete();
|
||||
}
|
||||
|
||||
private function validate(Site $site, array $input): void
|
||||
{
|
||||
Validator::make($input, [
|
||||
'domain' => [
|
||||
'required',
|
||||
Rule::in($site->domain),
|
||||
],
|
||||
])->validate();
|
||||
}
|
||||
}
|
||||
|
@ -4,7 +4,6 @@
|
||||
|
||||
use App\Enums\DeploymentStatus;
|
||||
use App\Exceptions\DeploymentScriptIsEmptyException;
|
||||
use App\Exceptions\SSHError;
|
||||
use App\Facades\Notifier;
|
||||
use App\Models\Deployment;
|
||||
use App\Models\ServerLog;
|
||||
@ -15,7 +14,6 @@ class Deploy
|
||||
{
|
||||
/**
|
||||
* @throws DeploymentScriptIsEmptyException
|
||||
* @throws SSHError
|
||||
*/
|
||||
public function run(Site $site): Deployment
|
||||
{
|
||||
@ -32,6 +30,11 @@ public function run(Site $site): Deployment
|
||||
'deployment_script_id' => $site->deploymentScript->id,
|
||||
'status' => DeploymentStatus::DEPLOYING,
|
||||
]);
|
||||
$log = ServerLog::newLog($site->server, 'deploy-'.strtotime('now'))
|
||||
->forSite($site);
|
||||
$log->save();
|
||||
$deployment->log_id = $log->id;
|
||||
$deployment->save();
|
||||
$lastCommit = $site->sourceControl?->provider()?->getLastCommit($site->repository, $site->branch);
|
||||
if ($lastCommit) {
|
||||
$deployment->commit_id = $lastCommit['commit_id'];
|
||||
@ -39,12 +42,7 @@ public function run(Site $site): Deployment
|
||||
}
|
||||
$deployment->save();
|
||||
|
||||
dispatch(function () use ($site, $deployment): void {
|
||||
$log = ServerLog::newLog($site->server, 'deploy-'.strtotime('now'))
|
||||
->forSite($site);
|
||||
$log->save();
|
||||
$deployment->log_id = $log->id;
|
||||
$deployment->save();
|
||||
dispatch(function () use ($site, $deployment, $log): void {
|
||||
$site->server->os()->runScript(
|
||||
path: $site->path,
|
||||
script: $site->deploymentScript->content,
|
||||
|
@ -3,6 +3,7 @@
|
||||
namespace App\Actions\Site;
|
||||
|
||||
use App\Models\Command;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
|
||||
class EditCommand
|
||||
{
|
||||
@ -11,6 +12,8 @@ class EditCommand
|
||||
*/
|
||||
public function edit(Command $command, array $input): Command
|
||||
{
|
||||
Validator::make($input, self::rules())->validate();
|
||||
|
||||
$command->name = $input['name'];
|
||||
$command->command = $input['command'];
|
||||
$command->save();
|
||||
|
@ -7,6 +7,7 @@
|
||||
use App\Models\CommandExecution;
|
||||
use App\Models\ServerLog;
|
||||
use App\Models\User;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
|
||||
class ExecuteCommand
|
||||
{
|
||||
@ -15,19 +16,31 @@ class ExecuteCommand
|
||||
*/
|
||||
public function execute(Command $command, User $user, array $input): CommandExecution
|
||||
{
|
||||
Validator::make($input, self::rules($command))->validate();
|
||||
|
||||
$variables = [];
|
||||
foreach ($command->getVariables() as $variable) {
|
||||
if (array_key_exists($variable, $input)) {
|
||||
$variables[$variable] = $input[$variable] ?? '';
|
||||
}
|
||||
}
|
||||
|
||||
$execution = new CommandExecution([
|
||||
'command_id' => $command->id,
|
||||
'server_id' => $command->site->server_id,
|
||||
'user_id' => $user->id,
|
||||
'variables' => $input['variables'] ?? [],
|
||||
'variables' => $variables,
|
||||
'status' => CommandExecutionStatus::EXECUTING,
|
||||
]);
|
||||
$execution->save();
|
||||
|
||||
dispatch(function () use ($execution, $command): void {
|
||||
$log = ServerLog::newLog($execution->server, 'command-'.$command->id.'-'.strtotime('now'));
|
||||
$log->save();
|
||||
$execution->server_log_id = $log->id;
|
||||
$execution->save();
|
||||
|
||||
dispatch(function () use ($execution, $command, $log): void {
|
||||
$content = $execution->getContent();
|
||||
$log = ServerLog::newLog($execution->server, 'command-'.$command->id.'-'.strtotime('now'));
|
||||
$log->save();
|
||||
$execution->server_log_id = $log->id;
|
||||
$execution->save();
|
||||
$execution->server->os()->runScript(
|
||||
@ -48,18 +61,19 @@ public function execute(Command $command, User $user, array $input): CommandExec
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array<string, mixed> $input
|
||||
* @return array<string, string|array<int, mixed>>
|
||||
*/
|
||||
public static function rules(array $input): array
|
||||
public static function rules(Command $command): array
|
||||
{
|
||||
return [
|
||||
'variables' => 'array',
|
||||
'variables.*' => [
|
||||
$rules = [];
|
||||
foreach ($command->getVariables() as $variable) {
|
||||
$rules[$variable] = [
|
||||
'required',
|
||||
'string',
|
||||
'max:255',
|
||||
],
|
||||
];
|
||||
];
|
||||
}
|
||||
|
||||
return $rules;
|
||||
}
|
||||
}
|
||||
|
@ -5,6 +5,7 @@
|
||||
use App\Exceptions\SSHError;
|
||||
use App\Models\Site;
|
||||
use App\SSH\Git\Git;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
|
||||
class UpdateBranch
|
||||
{
|
||||
@ -15,6 +16,8 @@ class UpdateBranch
|
||||
*/
|
||||
public function update(Site $site, array $input): void
|
||||
{
|
||||
Validator::make($input, self::rules())->validate();
|
||||
|
||||
$site->branch = $input['branch'];
|
||||
app(Git::class)->fetchOrigin($site);
|
||||
app(Git::class)->checkout($site);
|
||||
|
@ -4,6 +4,7 @@
|
||||
|
||||
use App\Models\DeploymentScript;
|
||||
use App\Models\Site;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
|
||||
class UpdateDeploymentScript
|
||||
{
|
||||
@ -12,6 +13,8 @@ class UpdateDeploymentScript
|
||||
*/
|
||||
public function update(Site $site, array $input): void
|
||||
{
|
||||
Validator::make($input, self::rules())->validate();
|
||||
|
||||
/** @var DeploymentScript $script */
|
||||
$script = $site->deploymentScript;
|
||||
$script->content = $input['script'];
|
||||
|
@ -4,6 +4,7 @@
|
||||
|
||||
use App\Exceptions\SSHError;
|
||||
use App\Models\Site;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
|
||||
class UpdateEnv
|
||||
{
|
||||
@ -14,10 +15,14 @@ class UpdateEnv
|
||||
*/
|
||||
public function update(Site $site, array $input): void
|
||||
{
|
||||
$site->server->os()->editFileAs(
|
||||
Validator::make($input, [
|
||||
'env' => ['required', 'string'],
|
||||
])->validate();
|
||||
|
||||
$site->server->os()->write(
|
||||
$site->path.'/.env',
|
||||
$site->user,
|
||||
trim((string) $input['env']),
|
||||
$site->user,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -5,6 +5,7 @@
|
||||
use App\Enums\LoadBalancerMethod;
|
||||
use App\Models\LoadBalancerServer;
|
||||
use App\Models\Site;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
use Illuminate\Validation\Rule;
|
||||
|
||||
class UpdateLoadBalancer
|
||||
@ -14,6 +15,8 @@ class UpdateLoadBalancer
|
||||
*/
|
||||
public function update(Site $site, array $input): void
|
||||
{
|
||||
Validator::make($input, self::rules($site))->validate();
|
||||
|
||||
$site->loadBalancerServers()->delete();
|
||||
|
||||
foreach ($input['servers'] as $server) {
|
||||
|
@ -4,10 +4,23 @@
|
||||
|
||||
use App\Exceptions\SSHError;
|
||||
use App\Models\Site;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
use Illuminate\Validation\Rule;
|
||||
|
||||
class UpdatePHPVersion
|
||||
{
|
||||
/**
|
||||
* @param array<string, mixed> $input
|
||||
*
|
||||
* @throws SSHError
|
||||
*/
|
||||
public function update(Site $site, array $input): void
|
||||
{
|
||||
Validator::make($input, self::rules($site))->validate();
|
||||
|
||||
$site->changePHPVersion($input['version']);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array<string, array<string>>
|
||||
*/
|
||||
@ -22,14 +35,4 @@ public static function rules(Site $site): array
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array<string, mixed> $input
|
||||
*
|
||||
* @throws SSHError
|
||||
*/
|
||||
public function update(Site $site, array $input): void
|
||||
{
|
||||
$site->changePHPVersion($input['version']);
|
||||
}
|
||||
}
|
||||
|
@ -6,6 +6,7 @@
|
||||
use App\Exceptions\RepositoryPermissionDenied;
|
||||
use App\Exceptions\SourceControlIsNotConnected;
|
||||
use App\Models\Site;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
use Illuminate\Validation\Rule;
|
||||
use Illuminate\Validation\ValidationException;
|
||||
|
||||
@ -18,6 +19,8 @@ class UpdateSourceControl
|
||||
*/
|
||||
public function update(Site $site, array $input): void
|
||||
{
|
||||
Validator::make($input, self::rules())->validate();
|
||||
|
||||
$site->source_control_id = $input['source_control'];
|
||||
try {
|
||||
if ($site->sourceControl) {
|
||||
|
Reference in New Issue
Block a user