Mysql 8.4 support and Stream log output (#407)

This commit is contained in:
Saeed Vaziry 2024-12-24 23:30:52 +01:00 committed by GitHub
parent 924920e6e8
commit dfdd50beb7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 47 additions and 5 deletions

View File

@ -14,6 +14,8 @@ final class Database
const MYSQL80 = 'mysql80'; const MYSQL80 = 'mysql80';
const MYSQL84 = 'mysql84';
const MARIADB103 = 'mariadb103'; const MARIADB103 = 'mariadb103';
const MARIADB104 = 'mariadb104'; const MARIADB104 = 'mariadb104';

View File

@ -93,7 +93,11 @@ public function connect(bool $sftp = false): void
*/ */
public function exec(string $command, string $log = '', ?int $siteId = null, ?bool $stream = false, ?callable $streamCallback = null): string public function exec(string $command, string $log = '', ?int $siteId = null, ?bool $stream = false, ?callable $streamCallback = null): string
{ {
if (! $this->log && $log) { if (! $log) {
$log = 'run-command';
}
if (! $this->log) {
$this->log = ServerLog::make($this->server, $log); $this->log = ServerLog::make($this->server, $log);
if ($siteId) { if ($siteId) {
$this->log->forSite($siteId); $this->log->forSite($siteId);
@ -117,16 +121,18 @@ public function exec(string $command, string $log = '', ?int $siteId = null, ?bo
$this->connection->setTimeout(0); $this->connection->setTimeout(0);
if ($stream) { if ($stream) {
$this->connection->exec($command, function ($output) use ($streamCallback) { $this->connection->exec($command, function ($output) use ($streamCallback) {
$this->log?->write($output); $this->log->write($output);
return $streamCallback($output); return $streamCallback($output);
}); });
return ''; return '';
} else { } else {
$output = $this->connection->exec($command); $output = '';
$this->connection->exec($command, function ($out) use (&$output) {
$this->log?->write($output); $this->log->write($out);
$output .= $out;
});
if ($this->connection->getExitStatus() !== 0 || Str::contains($output, 'VITO_SSH_ERROR')) { if ($this->connection->getExitStatus() !== 0 || Str::contains($output, 'VITO_SSH_ERROR')) {
throw new SSHCommandError( throw new SSHCommandError(

View File

@ -0,0 +1,27 @@
#!/bin/bash
sudo DEBIAN_FRONTEND=noninteractive apt-get update
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y lsb-release
DEBIAN_FRONTEND=noninteractive wget https://dev.mysql.com/get/mysql-apt-config_0.8.32-1_all.deb
sudo DEBIAN_FRONTEND=noninteractive dpkg -i mysql-apt-config_0.8.32-1_all.deb
sudo DEBIAN_FRONTEND=noninteractive apt-get update
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y mysql-server
sudo systemctl unmask mysql.service
sudo systemctl enable mysql
sudo systemctl start mysql
if ! sudo mysql -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH auth_socket;"; then
echo 'VITO_SSH_ERROR' && exit 1
fi
if ! sudo mysql -e "FLUSH PRIVILEGES"; then
echo 'VITO_SSH_ERROR' && exit 1
fi

View File

@ -57,6 +57,7 @@
\App\Enums\Database::NONE, \App\Enums\Database::NONE,
\App\Enums\Database::MYSQL57, \App\Enums\Database::MYSQL57,
\App\Enums\Database::MYSQL80, \App\Enums\Database::MYSQL80,
\App\Enums\Database::MYSQL84,
\App\Enums\Database::MARIADB103, \App\Enums\Database::MARIADB103,
\App\Enums\Database::MARIADB104, \App\Enums\Database::MARIADB104,
\App\Enums\Database::MARIADB106, \App\Enums\Database::MARIADB106,
@ -72,6 +73,7 @@
\App\Enums\Database::NONE => 'none', \App\Enums\Database::NONE => 'none',
\App\Enums\Database::MYSQL57 => 'mysql', \App\Enums\Database::MYSQL57 => 'mysql',
\App\Enums\Database::MYSQL80 => 'mysql', \App\Enums\Database::MYSQL80 => 'mysql',
\App\Enums\Database::MYSQL84 => 'mysql',
\App\Enums\Database::MARIADB103 => 'mariadb', \App\Enums\Database::MARIADB103 => 'mariadb',
\App\Enums\Database::MARIADB104 => 'mariadb', \App\Enums\Database::MARIADB104 => 'mariadb',
\App\Enums\Database::MARIADB106 => 'mariadb', \App\Enums\Database::MARIADB106 => 'mariadb',
@ -87,6 +89,7 @@
\App\Enums\Database::NONE => '', \App\Enums\Database::NONE => '',
\App\Enums\Database::MYSQL57 => '5.7', \App\Enums\Database::MYSQL57 => '5.7',
\App\Enums\Database::MYSQL80 => '8.0', \App\Enums\Database::MYSQL80 => '8.0',
\App\Enums\Database::MYSQL84 => '8.4',
\App\Enums\Database::MARIADB103 => '10.3', \App\Enums\Database::MARIADB103 => '10.3',
\App\Enums\Database::MARIADB104 => '10.4', \App\Enums\Database::MARIADB104 => '10.4',
\App\Enums\Database::MARIADB106 => '10.6', \App\Enums\Database::MARIADB106 => '10.6',
@ -201,6 +204,7 @@
'mysql' => [ 'mysql' => [
'5.7', '5.7',
'8.0', '8.0',
'8.4',
], ],
'mariadb' => [ 'mariadb' => [
'10.3', '10.3',
@ -273,14 +277,17 @@
\App\Enums\OperatingSystem::UBUNTU20 => [ \App\Enums\OperatingSystem::UBUNTU20 => [
'5.7' => 'mysql', '5.7' => 'mysql',
'8.0' => 'mysql', '8.0' => 'mysql',
'8.4' => 'mysql',
], ],
\App\Enums\OperatingSystem::UBUNTU22 => [ \App\Enums\OperatingSystem::UBUNTU22 => [
'5.7' => 'mysql', '5.7' => 'mysql',
'8.0' => 'mysql', '8.0' => 'mysql',
'8.4' => 'mysql',
], ],
\App\Enums\OperatingSystem::UBUNTU24 => [ \App\Enums\OperatingSystem::UBUNTU24 => [
'5.7' => 'mysql', '5.7' => 'mysql',
'8.0' => 'mysql', '8.0' => 'mysql',
'8.4' => 'mysql',
], ],
], ],
'mariadb' => [ 'mariadb' => [