From 75d1ec4f42c8188402a8d4d2943b1d7d2bd0f06d Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Thu, 14 Dec 2023 14:50:38 +0100 Subject: [PATCH] feat: pull latest images for services --- app/Actions/Service/StartService.php | 1 + app/Actions/Service/StopService.php | 1 + app/Actions/Shared/PullImage.php | 25 +++++++++++++++++++ app/Livewire/Project/Service/Navbar.php | 15 +++++++++++ .../components/services/navbar.blade.php | 20 ++++++++++++++- 5 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 app/Actions/Shared/PullImage.php diff --git a/app/Actions/Service/StartService.php b/app/Actions/Service/StartService.php index dc722aa83..a90b368ab 100644 --- a/app/Actions/Service/StartService.php +++ b/app/Actions/Service/StartService.php @@ -11,6 +11,7 @@ class StartService use AsAction; public function handle(Service $service) { + ray('Starting service: ' . $service->name); $network = $service->destination->network; $service->saveComposeConfigs(); $commands[] = "cd " . $service->workdir(); diff --git a/app/Actions/Service/StopService.php b/app/Actions/Service/StopService.php index f7de50165..d9ac6376e 100644 --- a/app/Actions/Service/StopService.php +++ b/app/Actions/Service/StopService.php @@ -10,6 +10,7 @@ class StopService use AsAction; public function handle(Service $service) { + ray('Stopping service: ' . $service->name); $applications = $service->applications()->get(); foreach ($applications as $application) { instant_remote_process(["docker rm -f {$application->name}-{$service->uuid}"], $service->server); diff --git a/app/Actions/Shared/PullImage.php b/app/Actions/Shared/PullImage.php new file mode 100644 index 000000000..42713b227 --- /dev/null +++ b/app/Actions/Shared/PullImage.php @@ -0,0 +1,25 @@ +saveComposeConfigs(); + + $commands[] = "cd " . $resource->workdir(); + $commands[] = "echo 'Saved configuration files to {$resource->workdir()}.'"; + $commands[] = "docker compose pull"; + + $server = data_get($resource, 'server'); + + if (!$server) return; + + instant_remote_process($commands, $resource->server); + } +} diff --git a/app/Livewire/Project/Service/Navbar.php b/app/Livewire/Project/Service/Navbar.php index 3e2c3485c..d401a1022 100644 --- a/app/Livewire/Project/Service/Navbar.php +++ b/app/Livewire/Project/Service/Navbar.php @@ -2,6 +2,7 @@ namespace App\Livewire\Project\Service; +use App\Actions\Shared\PullImage; use App\Actions\Service\StartService; use App\Actions\Service\StopService; use App\Events\ServiceStatusChanged; @@ -69,4 +70,18 @@ public function stop(bool $forceCleanup = false) } ServiceStatusChanged::dispatch(); } + public function restart() + { + $this->checkDeployments(); + if ($this->isDeploymentProgress) { + $this->dispatch('error', 'There is a deployment in progress.'); + return; + } + PullImage::run($this->service); + $this->dispatch('image-pulled'); + StopService::run($this->service); + $this->service->parse(); + $activity = StartService::run($this->service); + $this->dispatch('newMonitorActivity', $activity->id); + } } diff --git a/resources/views/components/services/navbar.blade.php b/resources/views/components/services/navbar.blade.php index 84ad7c6e1..c25bb3eac 100644 --- a/resources/views/components/services/navbar.blade.php +++ b/resources/views/components/services/navbar.blade.php @@ -1,4 +1,4 @@ -