diff --git a/config/sentry.php b/config/sentry.php index 1f1748039..23c9af8bb 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.163', + 'release' => '4.0.0-beta.164', // 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 df172e68a..d9e28384f 100644 --- a/config/version.php +++ b/config/version.php @@ -1,3 +1,3 @@ collect(); $headers = request()->headers->all(); - ray($payload, $headers); $x_gitlab_token = data_get($headers, 'x-gitlab-token.0'); $x_gitlab_event = data_get($payload, 'object_kind'); if ($x_gitlab_event === 'push') { @@ -77,20 +77,27 @@ Route::post('/source/gitlab/events/manual', function () { $branch = Str::after($branch, 'refs/heads/'); } if (!$branch) { - return response('Nothing to do. No branch found in the request.'); + $return_payloads->push([ + 'status' => 'failed', + 'message' => 'Nothing to do. No branch found in the request.', + ]); + return response($return_payloads); } ray('Manual Webhook GitLab Push Event with branch: ' . $branch); } if ($x_gitlab_event === 'merge_request') { $action = data_get($payload, 'object_attributes.action'); - ray($action); $branch = data_get($payload, 'object_attributes.source_branch'); $base_branch = data_get($payload, 'object_attributes.target_branch'); $full_name = data_get($payload, 'project.path_with_namespace'); $pull_request_id = data_get($payload, 'object_attributes.iid'); $pull_request_html_url = data_get($payload, 'object_attributes.url'); if (!$branch) { - return response('Nothing to do. No branch found in the request.'); + $return_payloads->push([ + 'status' => 'failed', + 'message' => 'Nothing to do. No branch found in the request.', + ]); + return response($return_payloads); } ray('Webhook GitHub Pull Request Event with branch: ' . $branch . ' and base branch: ' . $base_branch . ' and pull request id: ' . $pull_request_id); } @@ -98,23 +105,41 @@ Route::post('/source/gitlab/events/manual', function () { if ($x_gitlab_event === 'push') { $applications = $applications->where('git_branch', $branch)->get(); if ($applications->isEmpty()) { - return response("Nothing to do. No applications found with deploy key set, branch is '$branch' and Git Repository name has $full_name."); + $return_payloads->push([ + 'status' => 'failed', + 'message' => "Nothing to do. No applications found with deploy key set, branch is '$branch' and Git Repository name has $full_name.", + ]); + return response($return_payloads); } } if ($x_gitlab_event === 'merge_request') { $applications = $applications->where('git_branch', $base_branch)->get(); if ($applications->isEmpty()) { - return response("Nothing to do. No applications found with branch '$base_branch'."); + $return_payloads->push([ + 'status' => 'failed', + 'message' => "Nothing to do. No applications found with branch '$base_branch'.", + ]); + return response($return_payloads); } } foreach ($applications as $application) { $webhook_secret = data_get($application, 'manual_webhook_secret_gitlab'); if ($webhook_secret !== $x_gitlab_token) { + $return_payloads->push([ + 'application' => $application->name, + 'status' => 'failed', + 'message' => 'Invalid token.', + ]); ray('Invalid signature'); continue; } $isFunctional = $application->destination->server->isFunctional(); if (!$isFunctional) { + $return_payloads->push([ + 'application' => $application->name, + 'status' => 'failed', + 'message' => 'Server is not functional', + ]); ray('Server is not functional: ' . $application->destination->server->name); continue; } @@ -129,6 +154,11 @@ Route::post('/source/gitlab/events/manual', function () { is_webhook: true ); } else { + $return_payloads->push([ + 'application' => $application->name, + 'status' => 'failed', + 'message' => 'Deployments disabled', + ]); ray('Deployments disabled for ' . $application->name); } } @@ -154,25 +184,48 @@ Route::post('/source/gitlab/events/manual', function () { git_type: 'gitlab' ); ray('Deploying preview for ' . $application->name . ' with branch ' . $branch . ' and base branch ' . $base_branch . ' and pull request id ' . $pull_request_id); - return response('Preview Deployment queued.'); + $return_payloads->push([ + 'application' => $application->name, + 'status' => 'success', + 'message' => 'Preview Deployment queued', + ]); } else { + $return_payloads->push([ + 'application' => $application->name, + 'status' => 'failed', + 'message' => 'Preview deployments disabled', + ]); ray('Preview deployments disabled for ' . $application->name); - return response('Nothing to do. Preview Deployments disabled.'); } - } - if ($action === 'closed') { + } else if ($action === 'closed') { $found = ApplicationPreview::where('application_id', $application->id)->where('pull_request_id', $pull_request_id)->first(); if ($found) { $found->delete(); $container_name = generateApplicationContainerName($application, $pull_request_id); // ray('Stopping container: ' . $container_name); instant_remote_process(["docker rm -f $container_name"], $application->destination->server); - return response('Preview Deployment closed.'); + $return_payloads->push([ + 'application' => $application->name, + 'status' => 'success', + 'message' => 'Preview Deployment closed', + ]); + return response($return_payloads); } - return response('Nothing to do. No Preview Deployment found'); + $return_payloads->push([ + 'application' => $application->name, + 'status' => 'failed', + 'message' => 'No Preview Deployment found', + ]); + } else { + $return_payloads->push([ + 'application' => $application->name, + 'status' => 'failed', + 'message' => 'No action found. Contact us for debugging.', + ]); } } } + return response($return_payloads); } catch (Exception $e) { ray($e->getMessage()); return handleError($e); diff --git a/versions.json b/versions.json index 473e6beef..c57316476 100644 --- a/versions.json +++ b/versions.json @@ -4,7 +4,7 @@ "version": "3.12.36" }, "v4": { - "version": "4.0.0-beta.163" + "version": "4.0.0-beta.164" } } }