updates
This commit is contained in:
@@ -20,12 +20,20 @@ class Deploy extends Component
|
||||
protected array $command = [];
|
||||
protected $source;
|
||||
|
||||
protected $listeners = [
|
||||
'applicationStatusChanged' => 'applicationStatusChanged',
|
||||
];
|
||||
|
||||
public function mount()
|
||||
{
|
||||
$this->parameters = get_parameters();
|
||||
$this->application = Application::where('id', $this->applicationId)->first();
|
||||
$this->destination = $this->application->destination->getMorphClass()::where('id', $this->application->destination->id)->first();
|
||||
}
|
||||
public function applicationStatusChanged()
|
||||
{
|
||||
$this->application->refresh();
|
||||
}
|
||||
protected function set_deployment_uuid()
|
||||
{
|
||||
// Create Deployment ID
|
||||
|
||||
@@ -3,16 +3,17 @@
|
||||
namespace App\Http\Livewire\Project\Application;
|
||||
|
||||
use App\Enums\ActivityTypes;
|
||||
use App\Models\Application;
|
||||
use Illuminate\Support\Facades\Redis;
|
||||
use Livewire\Component;
|
||||
use Spatie\Activitylog\Models\Activity;
|
||||
|
||||
class DeploymentLogs extends Component
|
||||
{
|
||||
public Application $application;
|
||||
public $activity;
|
||||
public $isKeepAliveOn = true;
|
||||
public $deployment_uuid;
|
||||
|
||||
public function polling()
|
||||
{
|
||||
if (is_null($this->activity) && isset($this->deployment_uuid)) {
|
||||
|
||||
@@ -6,9 +6,8 @@ use App\Enums\ProcessStatus;
|
||||
use App\Models\Application;
|
||||
use App\Models\ApplicationDeploymentQueue;
|
||||
use Livewire\Component;
|
||||
use Spatie\Activitylog\Contracts\Activity;
|
||||
|
||||
class DeploymentCancel extends Component
|
||||
class DeploymentNavbar extends Component
|
||||
{
|
||||
public Application $application;
|
||||
public $activity;
|
||||
@@ -16,17 +15,23 @@ class DeploymentCancel extends Component
|
||||
public function cancel()
|
||||
{
|
||||
try {
|
||||
ray('Cancelling deployment: ' . $this->deployment_uuid . 'of application: ' . $this->application->uuid);
|
||||
$deployment = ApplicationDeploymentQueue::where('deployment_uuid', $this->deployment_uuid)->firstOrFail();
|
||||
$deployment->status = 'cancelled';
|
||||
ray('Cancelling deployment: ' . $this->deployment_uuid . ' of application: ' . $this->application->uuid);
|
||||
|
||||
// Update deployment queue
|
||||
$deployment = ApplicationDeploymentQueue::where('deployment_uuid', $this->deployment_uuid)->first();
|
||||
$deployment->status = 'cancelled by user';
|
||||
$deployment->save();
|
||||
|
||||
// Update activity
|
||||
$this->activity->properties = $this->activity->properties->merge([
|
||||
'exitCode' => 1,
|
||||
'status' => ProcessStatus::CANCELLED->value,
|
||||
]);
|
||||
$this->activity->save();
|
||||
|
||||
instant_remote_process(["docker rm -f {$this->deployment_uuid}"], $this->application->destination->server, throwError: false);
|
||||
// Remove builder container
|
||||
instant_remote_process(["docker rm -f {$this->deployment_uuid}"], $this->application->destination->server, throwError: false, repeat: 25);
|
||||
queue_next_deployment($this->application);
|
||||
} catch (\Throwable $th) {
|
||||
return general_error_handler($th, $this);
|
||||
}
|
||||
@@ -9,11 +9,9 @@ class Status extends Component
|
||||
{
|
||||
public Application $application;
|
||||
|
||||
protected $listeners = [
|
||||
'applicationStatusChanged' => 'pollingStatus',
|
||||
];
|
||||
public function pollingStatus()
|
||||
public function applicationStatusChanged()
|
||||
{
|
||||
$this->emit('applicationStatusChanged');
|
||||
$this->application->refresh();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -50,8 +50,8 @@ class ApplicationDeploymentJob implements ShouldQueue
|
||||
public string $deployment_uuid,
|
||||
public string $application_id,
|
||||
public bool $force_rebuild = false,
|
||||
public string|null $rollback_commit = null,
|
||||
public string|null $pull_request_id = null,
|
||||
public string $rollback_commit = 'HEAD',
|
||||
public int $pull_request_id = 0,
|
||||
) {
|
||||
$this->application_deployment_queue = ApplicationDeploymentQueue::find($this->application_deployment_queue_id);
|
||||
$this->application_deployment_queue->update([
|
||||
@@ -104,8 +104,6 @@ class ApplicationDeploymentJob implements ShouldQueue
|
||||
$this->deploy();
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
ray('Oops something is not okay, are you okay? 😢');
|
||||
ray($e);
|
||||
$this->execute_now([
|
||||
"echo '\nOops something is not okay, are you okay? 😢'",
|
||||
"echo '\n\n{$e->getMessage()}'",
|
||||
@@ -230,6 +228,7 @@ COPY --from=$this->build_image_name /app/{$this->application->publish_directory}
|
||||
"echo 'Starting deployment of {$this->application->git_repository}:{$this->application->git_branch}...'",
|
||||
]);
|
||||
$this->start_builder_image();
|
||||
ray('Rollback Commit: ' . $this->rollback_commit);
|
||||
if ($this->rollback_commit === 'HEAD') {
|
||||
$this->clone_repository();
|
||||
}
|
||||
@@ -265,35 +264,24 @@ COPY --from=$this->build_image_name /app/{$this->application->publish_directory}
|
||||
|
||||
public function failed(): void
|
||||
{
|
||||
ray('failed job');
|
||||
$this->activity->properties = $this->activity->properties->merge([
|
||||
'exitCode' => 1,
|
||||
'status' => ProcessStatus::ERROR->value,
|
||||
]);
|
||||
$this->activity->save();
|
||||
$this->next(ProcessStatus::ERROR->value);
|
||||
$this->fail();
|
||||
}
|
||||
|
||||
private function next(string $status)
|
||||
{
|
||||
ray($this->application_deployment_queue->status, Str::of($this->application_deployment_queue->status)->startsWith('cancelled'));
|
||||
if (!Str::of($this->application_deployment_queue->status)->startsWith('cancelled')) {
|
||||
$this->application_deployment_queue->update([
|
||||
'status' => $status,
|
||||
]);
|
||||
}
|
||||
dispatch(new ContainerStatusJob(
|
||||
application: $this->application,
|
||||
container_name: $this->container_name,
|
||||
pull_request_id: $this->pull_request_id
|
||||
));
|
||||
$this->application_deployment_queue->update([
|
||||
'status' => $status,
|
||||
]);
|
||||
$next_found = ApplicationDeploymentQueue::where('application_id', $this->application->id)->where('status', 'queued')->first();
|
||||
if ($next_found) {
|
||||
dispatch(new ApplicationDeploymentJob(
|
||||
application_deployment_queue_id: $next_found->id,
|
||||
application_id: $next_found->application_id,
|
||||
deployment_uuid: $next_found->deployment_uuid,
|
||||
force_rebuild: $next_found->force_rebuild,
|
||||
));
|
||||
}
|
||||
|
||||
queue_next_deployment($this->application);
|
||||
}
|
||||
private function execute_in_builder(string $command)
|
||||
{
|
||||
@@ -534,7 +522,7 @@ COPY --from=$this->build_image_name /app/{$this->application->publish_directory}
|
||||
} else {
|
||||
$commandText = collect($command)->implode("\n");
|
||||
}
|
||||
|
||||
ray('Executing command', $commandText);
|
||||
$this->activity->properties = $this->activity->properties->merge([
|
||||
'command' => $commandText,
|
||||
]);
|
||||
@@ -665,8 +653,5 @@ COPY --from=$this->build_image_name /app/{$this->application->publish_directory}
|
||||
$this->execute_now([
|
||||
$this->execute_in_builder("echo '{$docker_compose_base64}' | base64 -d > {$this->workdir}/docker-compose.yml")
|
||||
], hideFromOutput: true);
|
||||
$this->execute_now([
|
||||
"echo 'Done.'",
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user