feat: add deployment details to deploy endpoint
This commit is contained in:
parent
2a03b452d3
commit
515d401746
@ -45,15 +45,24 @@ private function by_uuids(string $uuid, int $teamId, bool $force = false)
|
|||||||
return response()->json(['error' => 'No UUIDs provided.', 'docs' => 'https://coolify.io/docs/api/deploy-webhook'], 400);
|
return response()->json(['error' => 'No UUIDs provided.', 'docs' => 'https://coolify.io/docs/api/deploy-webhook'], 400);
|
||||||
}
|
}
|
||||||
$message = collect([]);
|
$message = collect([]);
|
||||||
|
$deployments = collect();
|
||||||
|
$payload = collect();
|
||||||
foreach ($uuids as $uuid) {
|
foreach ($uuids as $uuid) {
|
||||||
$resource = getResourceByUuid($uuid, $teamId);
|
$resource = getResourceByUuid($uuid, $teamId);
|
||||||
if ($resource) {
|
if ($resource) {
|
||||||
$return_message = $this->deploy_resource($resource, $force);
|
['message' => $return_message, 'deployment_uuid' => $deployment_uuid] = $this->deploy_resource($resource, $force);
|
||||||
|
if ($deployment_uuid) {
|
||||||
|
$deployments->push(['resource_uuid' => $uuid, 'deployment_uuid' => $deployment_uuid->toString()]);
|
||||||
|
}
|
||||||
$message = $message->merge($return_message);
|
$message = $message->merge($return_message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ($message->count() > 0) {
|
if ($message->count() > 0) {
|
||||||
return response()->json(['message' => $message->toArray()], 200);
|
$payload->put('message', $message->toArray());
|
||||||
|
if ($deployments->count() > 0) {
|
||||||
|
$payload->put('details', $deployments->toArray());
|
||||||
|
}
|
||||||
|
return response()->json($payload->toArray(), 200);
|
||||||
}
|
}
|
||||||
return response()->json(['error' => "No resources found.", 'docs' => 'https://coolify.io/docs/api/deploy-webhook'], 404);
|
return response()->json(['error' => "No resources found.", 'docs' => 'https://coolify.io/docs/api/deploy-webhook'], 404);
|
||||||
}
|
}
|
||||||
@ -66,6 +75,8 @@ public function by_tags(string $tags, int $team_id, bool $force = false)
|
|||||||
return response()->json(['error' => 'No TAGs provided.', 'docs' => 'https://coolify.io/docs/api/deploy-webhook'], 400);
|
return response()->json(['error' => 'No TAGs provided.', 'docs' => 'https://coolify.io/docs/api/deploy-webhook'], 400);
|
||||||
}
|
}
|
||||||
$message = collect([]);
|
$message = collect([]);
|
||||||
|
$deployments = collect();
|
||||||
|
$payload = collect();
|
||||||
foreach ($tags as $tag) {
|
foreach ($tags as $tag) {
|
||||||
$found_tag = Tag::where(['name' => $tag, 'team_id' => $team_id])->first();
|
$found_tag = Tag::where(['name' => $tag, 'team_id' => $team_id])->first();
|
||||||
if (!$found_tag) {
|
if (!$found_tag) {
|
||||||
@ -79,21 +90,28 @@ public function by_tags(string $tags, int $team_id, bool $force = false)
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
foreach ($applications as $resource) {
|
foreach ($applications as $resource) {
|
||||||
$return_message = $this->deploy_resource($resource, $force);
|
['message' => $return_message, 'deployment_uuid' => $deployment_uuid] = $this->deploy_resource($resource, $force);
|
||||||
|
if ($deployment_uuid) {
|
||||||
|
$deployments->push(['resource_uuid' => $resource->uuid, 'deployment_uuid' => $deployment_uuid->toString()]);
|
||||||
|
}
|
||||||
$message = $message->merge($return_message);
|
$message = $message->merge($return_message);
|
||||||
}
|
}
|
||||||
foreach ($services as $resource) {
|
foreach ($services as $resource) {
|
||||||
$return_message = $this->deploy_resource($resource, $force);
|
['message' => $return_message] = $this->deploy_resource($resource, $force);
|
||||||
$message = $message->merge($return_message);
|
$message = $message->merge($return_message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ($message->count() > 0) {
|
if ($message->count() > 0) {
|
||||||
return response()->json(['message' => $message->toArray()], 200);
|
$payload->put('message', $message->toArray());
|
||||||
|
if ($deployments->count() > 0) {
|
||||||
|
$payload->put('details', $deployments->toArray());
|
||||||
|
}
|
||||||
|
return response()->json($payload->toArray(), 200);
|
||||||
}
|
}
|
||||||
|
|
||||||
return response()->json(['error' => "No resources found.", 'docs' => 'https://coolify.io/docs/api/deploy-webhook'], 404);
|
return response()->json(['error' => "No resources found.", 'docs' => 'https://coolify.io/docs/api/deploy-webhook'], 404);
|
||||||
}
|
}
|
||||||
public function deploy_resource($resource, bool $force = false): Collection
|
public function deploy_resource($resource, bool $force = false): array
|
||||||
{
|
{
|
||||||
$message = collect([]);
|
$message = collect([]);
|
||||||
if (gettype($resource) !== 'object') {
|
if (gettype($resource) !== 'object') {
|
||||||
@ -101,9 +119,10 @@ public function deploy_resource($resource, bool $force = false): Collection
|
|||||||
}
|
}
|
||||||
$type = $resource?->getMorphClass();
|
$type = $resource?->getMorphClass();
|
||||||
if ($type === 'App\Models\Application') {
|
if ($type === 'App\Models\Application') {
|
||||||
|
$deployment_uuid = new Cuid2(7);
|
||||||
queue_application_deployment(
|
queue_application_deployment(
|
||||||
application: $resource,
|
application: $resource,
|
||||||
deployment_uuid: new Cuid2(7),
|
deployment_uuid: $deployment_uuid,
|
||||||
force_rebuild: $force,
|
force_rebuild: $force,
|
||||||
);
|
);
|
||||||
$message->push("Application {$resource->name} deployment queued.");
|
$message->push("Application {$resource->name} deployment queued.");
|
||||||
@ -156,6 +175,6 @@ public function deploy_resource($resource, bool $force = false): Collection
|
|||||||
StartService::run($resource);
|
StartService::run($resource);
|
||||||
$message->push("Service {$resource->name} started. It could take a while, be patient.");
|
$message->push("Service {$resource->name} started. It could take a while, be patient.");
|
||||||
}
|
}
|
||||||
return $message;
|
return ['message' => $message, 'deployment_uuid' => $deployment_uuid];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -32,10 +32,13 @@
|
|||||||
return response(config('version'));
|
return response(config('version'));
|
||||||
});
|
});
|
||||||
Route::get('/deploy', [Deploy::class, 'deploy']);
|
Route::get('/deploy', [Deploy::class, 'deploy']);
|
||||||
|
|
||||||
Route::get('/servers', [Server::class, 'servers']);
|
Route::get('/servers', [Server::class, 'servers']);
|
||||||
Route::get('/server/{uuid}', [Server::class, 'server_by_uuid']);
|
Route::get('/server/{uuid}', [Server::class, 'server_by_uuid']);
|
||||||
|
|
||||||
Route::get('/resources', [Resources::class, 'resources']);
|
Route::get('/resources', [Resources::class, 'resources']);
|
||||||
Route::get('/domains', [Domains::class, 'domains']);
|
Route::get('/domains', [Domains::class, 'domains']);
|
||||||
|
|
||||||
Route::get('/teams', [Team::class, 'teams']);
|
Route::get('/teams', [Team::class, 'teams']);
|
||||||
Route::get('/team/current', [Team::class, 'current_team']);
|
Route::get('/team/current', [Team::class, 'current_team']);
|
||||||
Route::get('/team/current/members', [Team::class, 'current_team_members']);
|
Route::get('/team/current/members', [Team::class, 'current_team_members']);
|
||||||
|
Loading…
Reference in New Issue
Block a user