Store deployment configuration snapshots on application deployment queues and compare them against the current application state. Surface grouped pending changes in the configuration checker and use build-impact diffs to decide when an existing image can skip the build step.
62 lines
1.8 KiB
PHP
62 lines
1.8 KiB
PHP
<?php
|
|
|
|
namespace App\Livewire\Project\Shared;
|
|
|
|
use App\Models\Application;
|
|
use App\Models\Service;
|
|
use App\Models\StandaloneClickhouse;
|
|
use App\Models\StandaloneDragonfly;
|
|
use App\Models\StandaloneKeydb;
|
|
use App\Models\StandaloneMariadb;
|
|
use App\Models\StandaloneMongodb;
|
|
use App\Models\StandaloneMysql;
|
|
use App\Models\StandalonePostgresql;
|
|
use App\Models\StandaloneRedis;
|
|
use Livewire\Component;
|
|
|
|
class ConfigurationChecker extends Component
|
|
{
|
|
public bool $isConfigurationChanged = false;
|
|
|
|
public array $configurationDiff = [];
|
|
|
|
public array $groupedConfigurationChanges = [];
|
|
|
|
public Application|Service|StandaloneRedis|StandalonePostgresql|StandaloneMongodb|StandaloneMysql|StandaloneMariadb|StandaloneKeydb|StandaloneDragonfly|StandaloneClickhouse $resource;
|
|
|
|
public function getListeners()
|
|
{
|
|
$teamId = auth()->user()->currentTeam()->id;
|
|
|
|
return [
|
|
"echo-private:team.{$teamId},ApplicationConfigurationChanged" => 'configurationChanged',
|
|
'configurationChanged' => 'configurationChanged',
|
|
];
|
|
}
|
|
|
|
public function mount()
|
|
{
|
|
$this->configurationChanged();
|
|
}
|
|
|
|
public function render()
|
|
{
|
|
return view('livewire.project.shared.configuration-checker');
|
|
}
|
|
|
|
public function configurationChanged()
|
|
{
|
|
if ($this->resource instanceof Application) {
|
|
$diff = $this->resource->pendingDeploymentConfigurationDiff();
|
|
$this->isConfigurationChanged = $diff->isChanged();
|
|
$this->configurationDiff = $diff->toArray();
|
|
$this->groupedConfigurationChanges = $diff->groupedChanges();
|
|
|
|
return;
|
|
}
|
|
|
|
$this->isConfigurationChanged = $this->resource->isConfigurationChanged();
|
|
$this->configurationDiff = [];
|
|
$this->groupedConfigurationChanges = [];
|
|
}
|
|
}
|