diff --git a/app/Http/Controllers/Webhook/Github.php b/app/Http/Controllers/Webhook/Github.php index 373d89918..5a8f1c2f0 100644 --- a/app/Http/Controllers/Webhook/Github.php +++ b/app/Http/Controllers/Webhook/Github.php @@ -311,20 +311,9 @@ class Github extends Controller } if ($x_github_event === 'push') { if ($application->isDeployable()) { - $watch_files_trigger = $application->watchPathCheck($changed_files); - if (!$watch_files_trigger) { - $paths = str($application->watch_paths)->explode("\n"); - $return_payloads->push([ - 'status' => 'failed', - 'message' => 'Changed files do not match watch paths. Ignoring deployment.', - 'application_uuid' => $application->uuid, - 'application_name' => $application->name, - 'details' => [ - 'changed_files' => $changed_files, - 'watch_paths' => $paths, - ], - ]); - } else { + $is_watch_path_triggered = $application->isWatchPathsTriggered($changed_files); + ray('Watch files trigger: ' . !$is_watch_path_triggered); + if ($is_watch_path_triggered || is_null($application->watch_paths)) { ray('Deploying ' . $application->name . ' with branch ' . $branch); $deployment_uuid = new Cuid2(7); queue_application_deployment( @@ -339,6 +328,18 @@ class Github extends Controller 'application_uuid' => $application->uuid, 'application_name' => $application->name, ]); + } else { + $paths = str($application->watch_paths)->explode("\n"); + $return_payloads->push([ + 'status' => 'failed', + 'message' => 'Changed files do not match watch paths. Ignoring deployment.', + 'application_uuid' => $application->uuid, + 'application_name' => $application->name, + 'details' => [ + 'changed_files' => $changed_files, + 'watch_paths' => $paths, + ], + ]); } } else { $return_payloads->push([ diff --git a/app/Models/Application.php b/app/Models/Application.php index fc03f8b1e..4aef5db69 100644 --- a/app/Models/Application.php +++ b/app/Models/Application.php @@ -914,8 +914,11 @@ class Application extends BaseModel } ); } - public function watchPathCheck(Collection $modified_files): bool + public function isWatchPathsTriggered(Collection $modified_files): bool { + if (is_null($this->watch_paths)) { + return false; + } $watch_paths = collect(explode("\n", $this->watch_paths)); $matches = $modified_files->filter(function ($file) use ($watch_paths) { return $watch_paths->contains(function ($glob) use ($file) {