Refactor webhook handling logic and add file change validation
This commit is contained in:
parent
49b3a75a8b
commit
96a0f29f19
@ -51,6 +51,10 @@ public function manual(Request $request)
|
|||||||
]);
|
]);
|
||||||
return response($return_payloads);
|
return response($return_payloads);
|
||||||
}
|
}
|
||||||
|
$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('Manual Webhook GitLab Push Event with branch: ' . $branch);
|
ray('Manual Webhook GitLab Push Event with branch: ' . $branch);
|
||||||
}
|
}
|
||||||
if ($x_gitlab_event === 'merge_request') {
|
if ($x_gitlab_event === 'merge_request') {
|
||||||
@ -113,19 +117,41 @@ public function manual(Request $request)
|
|||||||
}
|
}
|
||||||
if ($x_gitlab_event === 'push') {
|
if ($x_gitlab_event === 'push') {
|
||||||
if ($application->isDeployable()) {
|
if ($application->isDeployable()) {
|
||||||
|
$is_watch_path_triggered = $application->isWatchPathsTriggered($changed_files);
|
||||||
|
if ($is_watch_path_triggered || is_null($application->watch_paths)) {
|
||||||
ray('Deploying ' . $application->name . ' with branch ' . $branch);
|
ray('Deploying ' . $application->name . ' with branch ' . $branch);
|
||||||
$deployment_uuid = new Cuid2(7);
|
$deployment_uuid = new Cuid2(7);
|
||||||
queue_application_deployment(
|
queue_application_deployment(
|
||||||
application: $application,
|
application: $application,
|
||||||
deployment_uuid: $deployment_uuid,
|
deployment_uuid: $deployment_uuid,
|
||||||
force_rebuild: false,
|
force_rebuild: false,
|
||||||
is_webhook: true
|
is_webhook: true,
|
||||||
);
|
);
|
||||||
|
$return_payloads->push([
|
||||||
|
'status' => 'success',
|
||||||
|
'message' => 'Deployment queued.',
|
||||||
|
'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 {
|
} else {
|
||||||
$return_payloads->push([
|
$return_payloads->push([
|
||||||
'application' => $application->name,
|
|
||||||
'status' => 'failed',
|
'status' => 'failed',
|
||||||
'message' => 'Deployments disabled',
|
'message' => 'Deployments disabled',
|
||||||
|
'application_uuid' => $application->uuid,
|
||||||
|
'application_name' => $application->name,
|
||||||
]);
|
]);
|
||||||
ray('Deployments disabled for ' . $application->name);
|
ray('Deployments disabled for ' . $application->name);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user