fix: test new upgrade process?

This commit is contained in:
Andras Bacsai 2024-05-28 15:05:18 +02:00
parent 10d38b709b
commit 397b7fefe3
3 changed files with 27 additions and 50 deletions

View File

@ -5,6 +5,7 @@
use Lorisleiva\Actions\Concerns\AsAction;
use App\Models\InstanceSettings;
use App\Models\Server;
use Illuminate\Support\Facades\Log;
class UpdateCoolify
{
@ -12,12 +13,10 @@ class UpdateCoolify
public ?Server $server = null;
public ?string $latestVersion = null;
public ?string $currentVersion = null;
public bool $async = false;
public function handle(bool $force = false, bool $async = false)
public function handle()
{
try {
$this->async = $async;
$settings = InstanceSettings::get();
ray('Running InstanceAutoUpdateJob');
$this->server = Server::find(0);
@ -27,24 +26,20 @@ public function handle(bool $force = false, bool $async = false)
CleanupDocker::run($this->server, false);
$this->latestVersion = get_latest_version_of_coolify();
$this->currentVersion = config('version');
// if ($settings->next_channel) {
// ray('next channel enabled');
// $this->latestVersion = 'next';
// }
if ($force) {
$this->update();
} else {
if (!$settings->is_auto_update_enabled) {
return 'Auto update is disabled';
}
if ($this->latestVersion === $this->currentVersion) {
return 'Already on latest version';
}
if (version_compare($this->latestVersion, $this->currentVersion, '<')) {
return 'Latest version is lower than current version?!';
}
$this->update();
if (!$settings->is_auto_update_enabled) {
Log::info('Auto update is disabled');
throw 'Auto update is disabled';
}
if ($this->latestVersion === $this->currentVersion) {
Log::info('Already on latest version');
throw 'Already on latest version';
}
if (version_compare($this->latestVersion, $this->currentVersion, '<')) {
Log::info('Latest version is lower than current version?!');
throw 'Latest version is lower than current version?!';
}
Log::info("Updating from {$this->currentVersion} -> {$this->latestVersion}");
$this->update();
} catch (\Throwable $e) {
ray('InstanceAutoUpdateJob failed');
ray($e->getMessage());
@ -56,34 +51,16 @@ public function handle(bool $force = false, bool $async = false)
private function update()
{
if (isDev()) {
ray("Running update on local docker container. Updating to $this->latestVersion");
if ($this->async) {
ray('Running async update');
remote_process([
"sleep 10"
], $this->server);
} else {
instant_remote_process([
"sleep 10"
], $this->server);
}
ray('Update done');
return;
} else {
ray('Running update on production server');
if ($this->async) {
remote_process([
"curl -fsSL https://cdn.coollabs.io/coolify/upgrade.sh -o /data/coolify/source/upgrade.sh",
"bash /data/coolify/source/upgrade.sh $this->latestVersion"
], $this->server);
} else {
instant_remote_process([
"curl -fsSL https://cdn.coollabs.io/coolify/upgrade.sh -o /data/coolify/source/upgrade.sh",
"bash /data/coolify/source/upgrade.sh $this->latestVersion"
], $this->server);
}
send_internal_notification("Instance updated from {$this->currentVersion} -> {$this->latestVersion}");
instant_remote_process([
"sleep 10"
], $this->server);
return;
}
instant_remote_process([
"curl -fsSL https://cdn.coollabs.io/coolify/upgrade.sh -o /data/coolify/source/upgrade.sh",
"bash /data/coolify/source/upgrade.sh $this->latestVersion"
], $this->server);
send_internal_notification("Instance updated from {$this->currentVersion} -> {$this->latestVersion}");
return;
}
}

View File

@ -18,12 +18,12 @@ class InstanceAutoUpdateJob implements ShouldQueue, ShouldBeUnique, ShouldBeEncr
public $timeout = 600;
public $tries = 1;
public function __construct(private bool $force = false)
public function __construct()
{
}
public function handle(): void
{
UpdateCoolify::run(force: $this->force, async: false);
UpdateCoolify::run();
}
}

View File

@ -33,7 +33,7 @@ public function upgrade()
}
$this->rateLimit(1, 60);
$this->updateInProgress = true;
UpdateCoolify::run(force: true, async: false);
UpdateCoolify::run();
} catch (\Throwable $e) {
return handleError($e, $this);
}