script = $deployment->deploymentScript->content; $this->deployment = $deployment; $this->path = $path; } /** * @throws Throwable */ public function handle(): void { $ssh = $this->deployment->site->server->ssh(); try { $ssh->exec( new RunScriptCommand($this->path, $this->script), 'deploy', $this->deployment->site_id ); $this->deployment->status = DeploymentStatus::FINISHED; $this->deployment->log_id = $ssh->log->id; $this->deployment->save(); } catch (Throwable) { $this->deployment->log_id = $ssh->log->id; $this->deployment->save(); $this->failed(); } } public function failed(): void { $this->deployment->status = DeploymentStatus::FAILED; $this->deployment->save(); } }