diff --git a/app/Http/Livewire/DeployApplication.php b/app/Http/Livewire/DeployApplication.php index c1adcbcee..4294c08d6 100644 --- a/app/Http/Livewire/DeployApplication.php +++ b/app/Http/Livewire/DeployApplication.php @@ -27,19 +27,39 @@ class DeployApplication extends Component $this->application = Application::find($this->applicationId)->first(); $this->destination = $this->application->destination->getMorphClass()::where('id', $this->application->destination->id)->first(); } - - public function start() + protected function setDeploymentUuid() { // Create Deployment ID $this->deployment_uuid = new Cuid2(7); $this->parameters['deployment_uuid'] = $this->deployment_uuid; + } + protected function redirectToDeployment() + { + return redirect()->route('project.applications.deployment', $this->parameters); + } + public function start() + { + $this->setDeploymentUuid(); dispatch(new DeployApplicationJob( deployment_uuid: $this->deployment_uuid, application_uuid: $this->application->uuid, + force_rebuild: false, )); - return redirect()->route('project.applications.deployment', $this->parameters); + return $this->redirectToDeployment(); + } + public function forceRebuild() + { + $this->setDeploymentUuid(); + + dispatch(new DeployApplicationJob( + deployment_uuid: $this->deployment_uuid, + application_uuid: $this->application->uuid, + force_rebuild: true, + )); + + return $this->redirectToDeployment(); } public function stop() diff --git a/app/Jobs/DeployApplicationJob.php b/app/Jobs/DeployApplicationJob.php index ff06a92ea..ac107c3fe 100644 --- a/app/Jobs/DeployApplicationJob.php +++ b/app/Jobs/DeployApplicationJob.php @@ -43,6 +43,7 @@ class DeployApplicationJob implements ShouldQueue public function __construct( public string $deployment_uuid, public string $application_uuid, + public bool $force_rebuild = false, ) { $this->application = Application::query() ->where('uuid', $this->application_uuid) @@ -86,7 +87,7 @@ class DeployApplicationJob implements ShouldQueue // Set wildcard domain if (!$this->application->settings->is_bot && !$this->application->fqdn && $wildcard_domain) { - $this->application->fqdn = $this->application->uuid . '.' . $wildcard_domain; + $this->application->fqdn = 'http://' . $this->application->uuid . '.' . $wildcard_domain; $this->application->save(); } $this->workdir = "/artifacts/{$this->deployment_uuid}"; @@ -116,24 +117,28 @@ class DeployApplicationJob implements ShouldQueue $this->executeNow([$this->execute_in_builder("cd {$this->workdir} && git rev-parse HEAD")], 'commit_sha', hideFromOutput: true); $this->git_commit = $this->activity->properties->get('commit_sha'); - $this->executeNow([ - "docker inspect {$this->application->uuid} --format '{{json .Config.Image}}' 2>&1", - ], 'stopped_container_image', hideFromOutput: true, ignoreErrors: true); - $image = $this->activity->properties->get('stopped_container_image'); - if (isset($image)) { - $image = explode(':', str_replace('"', '', $image))[1]; - if ($image == $this->git_commit) { - $this->executeNow([ - "echo -n 'Application found locally with the same Git Commit SHA. Starting it... '" - ]); - $this->executeNow([ - "docker start {$this->application->uuid}" - ], hideFromOutput: true); + if (!$this->force_rebuild) { - $this->executeNow([ - "echo 'Done. 🎉'", - ], isFinished: true); - return; + + $this->executeNow([ + "docker inspect {$this->application->uuid} --format '{{json .Config.Image}}' 2>&1", + ], 'stopped_container_image', hideFromOutput: true, ignoreErrors: true); + $image = $this->activity->properties->get('stopped_container_image'); + if (isset($image)) { + $image = explode(':', str_replace('"', '', $image))[1]; + if ($image == $this->git_commit) { + $this->executeNow([ + "echo -n 'Application found locally with the same Git Commit SHA. Starting it... '" + ]); + $this->executeNow([ + "docker start {$this->application->uuid}" + ], hideFromOutput: true); + + $this->executeNow([ + "echo 'Done. 🎉'", + ], isFinished: true); + return; + } } } $this->executeNow([ diff --git a/resources/views/livewire/deploy-application.blade.php b/resources/views/livewire/deploy-application.blade.php index 99d8271f4..0b1f7e7be 100644 --- a/resources/views/livewire/deploy-application.blade.php +++ b/resources/views/livewire/deploy-application.blade.php @@ -1,13 +1,19 @@