feat: watch paths

This commit is contained in:
Andras Bacsai
2024-03-28 15:05:12 +01:00
parent 971b17b364
commit 51d716253f
7 changed files with 91 additions and 15 deletions

View File

@@ -204,6 +204,7 @@ class Github extends Controller
}
public function normal(Request $request)
{
ray('asdf');
try {
$return_payloads = collect([]);
$id = null;
@@ -266,6 +267,10 @@ class Github extends Controller
if (Str::isMatch('/refs\/heads\/*/', $branch)) {
$branch = Str::after($branch, 'refs/heads/');
}
$added_files = data_get($payload, 'commits.*.added');
$removed_files = data_get($payload, 'commits.*.removed');
$modified_files = data_get($payload, 'commits.*.modified');
$changed_files = collect($added_files)->concat($removed_files)->concat($modified_files)->unique()->flatten();
ray('Webhook GitHub Push Event: ' . $id . ' with branch: ' . $branch);
}
if ($x_github_event === 'pull_request') {
@@ -306,19 +311,32 @@ class Github extends Controller
}
if ($x_github_event === 'push') {
if ($application->isDeployable()) {
ray('Deploying ' . $application->name . ' with branch ' . $branch);
$deployment_uuid = new Cuid2(7);
queue_application_deployment(
application: $application,
deployment_uuid: $deployment_uuid,
force_rebuild: false,
is_webhook: true
);
$return_payloads->push([
'application' => $application->name,
'status' => 'success',
'message' => 'Deployment queued.',
]);
$watch_files_trigger = $application->watchPathCheck($changed_files);
if (!$watch_files_trigger) {
$return_payloads->push([
'application' => $application->name,
'status' => 'failed',
'message' => 'Watch paths does not have the changed files. Deployment ignored.',
'details' => [
'changed_files' => $changed_files,
'watch_paths' => $application->watch_paths,
],
]);
} else {
ray('Deploying ' . $application->name . ' with branch ' . $branch);
$deployment_uuid = new Cuid2(7);
queue_application_deployment(
application: $application,
deployment_uuid: $deployment_uuid,
force_rebuild: false,
is_webhook: true,
);
$return_payloads->push([
'application' => $application->name,
'status' => 'success',
'message' => 'Deployment queued.',
]);
}
} else {
$return_payloads->push([
'application' => $application->name,