From bc31df6fb265a34d71fdba257ef6f6e4b50af94e Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Fri, 2 Feb 2024 14:52:24 +0100 Subject: [PATCH 01/13] Update version numbers to 4.0.0-beta.206 --- config/sentry.php | 2 +- config/version.php | 2 +- versions.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/config/sentry.php b/config/sentry.php index 699995883..ba9cad2a6 100644 --- a/config/sentry.php +++ b/config/sentry.php @@ -7,7 +7,7 @@ return [ // The release version of your application // Example with dynamic git hash: trim(exec('git --git-dir ' . base_path('.git') . ' log --pretty="%h" -n1 HEAD')) - 'release' => '4.0.0-beta.205', + 'release' => '4.0.0-beta.206', // When left empty or `null` the Laravel environment will be used 'environment' => config('app.env'), diff --git a/config/version.php b/config/version.php index ff50755a2..b5ee31af0 100644 --- a/config/version.php +++ b/config/version.php @@ -1,3 +1,3 @@ Date: Sat, 3 Feb 2024 12:39:07 +0100 Subject: [PATCH 02/13] fix: tags --- app/Http/Controllers/Api/Deploy.php | 11 ++++-- app/Livewire/Project/Shared/Tags.php | 7 ++-- app/Livewire/Tags/Show.php | 35 +++++++++++-------- app/Models/Application.php | 3 ++ app/Models/Service.php | 4 +++ app/Models/Tag.php | 7 ++-- .../livewire/project/resource/index.blade.php | 2 +- .../livewire/project/shared/tags.blade.php | 23 ++++++------ resources/views/livewire/tags/show.blade.php | 18 +++++++--- 9 files changed, 70 insertions(+), 40 deletions(-) diff --git a/app/Http/Controllers/Api/Deploy.php b/app/Http/Controllers/Api/Deploy.php index 322d73e67..04fc9b816 100644 --- a/app/Http/Controllers/Api/Deploy.php +++ b/app/Http/Controllers/Api/Deploy.php @@ -73,12 +73,17 @@ class Deploy extends Controller $message->push("Tag {$tag} not found."); continue; } - $resources = $found_tag->resources()->get(); - if ($resources->count() === 0) { + $applications = $found_tag->applications(); + $services = $found_tag->services(); + if ($applications->count() === 0 && $services->count() === 0) { $message->push("No resources found for tag {$tag}."); continue; } - foreach ($resources as $resource) { + foreach ($applications as $resource) { + $return_message = $this->deploy_resource($resource, $force); + $message = $message->merge($return_message); + } + foreach ($services as $resource) { $return_message = $this->deploy_resource($resource, $force); $message = $message->merge($return_message); } diff --git a/app/Livewire/Project/Shared/Tags.php b/app/Livewire/Project/Shared/Tags.php index db330b15c..fc17dcdf6 100644 --- a/app/Livewire/Project/Shared/Tags.php +++ b/app/Livewire/Project/Shared/Tags.php @@ -37,12 +37,13 @@ class Tags extends Component return handleError($e, $this); } } - public function deleteTag($id, $name) + public function deleteTag(string $id) { try { - $found_more_tags = Tag::where(['name' => $name, 'team_id' => currentTeam()->id])->first(); $this->resource->tags()->detach($id); - if ($found_more_tags->resources()->get()->count() == 0) { + + $found_more_tags = Tag::where(['id' => $id, 'team_id' => currentTeam()->id])->first(); + if ($found_more_tags->applications()->count() == 0 && $found_more_tags->services()->count() == 0){ $found_more_tags->delete(); } $this->refresh(); diff --git a/app/Livewire/Tags/Show.php b/app/Livewire/Tags/Show.php index 6a61a0851..8574646d7 100644 --- a/app/Livewire/Tags/Show.php +++ b/app/Livewire/Tags/Show.php @@ -10,14 +10,27 @@ use Livewire\Component; class Show extends Component { public Tag $tag; - public $resources; + public $applications; + public $services; public $webhook = null; public $deployments_per_tag_per_server = []; + public function mount() + { + $tag = Tag::ownedByCurrentTeam()->where('name', request()->tag_name)->first(); + if (!$tag) { + return redirect()->route('tags.index'); + } + $this->webhook = generatTagDeployWebhook($tag->name); + $this->applications = $tag->applications()->get(); + $this->services = $tag->services()->get(); + $this->tag = $tag; + $this->get_deployments(); + } public function get_deployments() { try { - $resource_ids = $this->resources->pluck('id'); + $resource_ids = $this->applications->pluck('id'); $this->deployments_per_tag_per_server = ApplicationDeploymentQueue::whereIn("status", ["in_progress", "queued"])->whereIn('application_id', $resource_ids)->get([ "id", "application_id", @@ -35,7 +48,11 @@ class Show extends Component public function redeploy_all() { try { - $this->resources->each(function ($resource) { + $this->applications->each(function ($resource) { + $deploy = new Deploy(); + $deploy->deploy_resource($resource); + }); + $this->services->each(function ($resource) { $deploy = new Deploy(); $deploy->deploy_resource($resource); }); @@ -44,17 +61,7 @@ class Show extends Component return handleError($e, $this); } } - public function mount() - { - $tag = Tag::ownedByCurrentTeam()->where('name', request()->tag_name)->first(); - if (!$tag) { - return redirect()->route('tags.index'); - } - $this->webhook = generatTagDeployWebhook($tag->name); - $this->resources = $tag->resources()->get(); - $this->tag = $tag; - $this->get_deployments(); - } + public function render() { return view('livewire.tags.show'); diff --git a/app/Models/Application.php b/app/Models/Application.php index b91acdcff..cf3141ed7 100644 --- a/app/Models/Application.php +++ b/app/Models/Application.php @@ -216,6 +216,9 @@ class Application extends BaseModel { return $this->morphToMany(Tag::class, 'taggable'); } + public function project() { + return data_get($this, 'environment.project'); + } public function team() { return data_get($this, 'environment.project.team'); diff --git a/app/Models/Service.php b/app/Models/Service.php index b6d5e86d3..244964db1 100644 --- a/app/Models/Service.php +++ b/app/Models/Service.php @@ -16,6 +16,10 @@ class Service extends BaseModel { return 'service'; } + public function project() + { + return data_get($this, 'environment.project'); + } public function team() { return data_get($this, 'environment.project.team'); diff --git a/app/Models/Tag.php b/app/Models/Tag.php index 02b3a7ff5..b7d50b84f 100644 --- a/app/Models/Tag.php +++ b/app/Models/Tag.php @@ -24,9 +24,8 @@ class Tag extends BaseModel { return $this->morphedByMany(Application::class, 'taggable'); } - - public function resources() { - return $this->applications(); + public function services() + { + return $this->morphedByMany(Service::class, 'taggable'); } - } diff --git a/resources/views/livewire/project/resource/index.blade.php b/resources/views/livewire/project/resource/index.blade.php index f87b7ea87..9f366ce55 100644 --- a/resources/views/livewire/project/resource/index.blade.php +++ b/resources/views/livewire/project/resource/index.blade.php @@ -46,7 +46,7 @@ @else
-
+