commit
c71d5e2dfb
@ -469,17 +469,17 @@ private function deploy_dockerfile_buildpack()
|
||||
$this->set_base_dir();
|
||||
$this->generate_image_names();
|
||||
$this->clone_repository();
|
||||
// if (!$this->force_rebuild) {
|
||||
// $this->check_image_locally_or_remotely();
|
||||
// if (str($this->saved_outputs->get('local_image_found'))->isNotEmpty() && !$this->application->isConfigurationChanged()) {
|
||||
// $this->create_workdir();
|
||||
// $this->application_deployment_queue->addLogEntry("No configuration changed & image found ({$this->production_image_name}) with the same Git Commit SHA. Build step skipped.");
|
||||
// $this->generate_compose_file();
|
||||
// $this->push_to_docker_registry();
|
||||
// $this->rolling_update();
|
||||
// return;
|
||||
// }
|
||||
// }
|
||||
if (!$this->force_rebuild) {
|
||||
$this->check_image_locally_or_remotely();
|
||||
if (str($this->saved_outputs->get('local_image_found'))->isNotEmpty() && !$this->application->isConfigurationChanged()) {
|
||||
$this->create_workdir();
|
||||
$this->application_deployment_queue->addLogEntry("No configuration changed & image found ({$this->production_image_name}) with the same Git Commit SHA. Build step skipped.");
|
||||
$this->generate_compose_file();
|
||||
$this->push_to_docker_registry();
|
||||
$this->rolling_update();
|
||||
return;
|
||||
}
|
||||
}
|
||||
$this->cleanup_git();
|
||||
$this->generate_compose_file();
|
||||
$this->generate_build_env_variables();
|
||||
|
@ -24,6 +24,16 @@ public function render()
|
||||
{
|
||||
return view('livewire.project.service.service-application-view');
|
||||
}
|
||||
public function updatedApplicationFqdn()
|
||||
{
|
||||
$this->application->fqdn = str($this->application->fqdn)->replaceEnd(',', '')->trim();
|
||||
$this->application->fqdn = str($this->application->fqdn)->replaceStart(',', '')->trim();
|
||||
$this->application->fqdn = str($this->application->fqdn)->trim()->explode(',')->map(function ($domain) {
|
||||
return str($domain)->trim()->lower();
|
||||
});
|
||||
$this->application->fqdn = $this->application->fqdn->unique()->implode(',');
|
||||
$this->application->save();
|
||||
}
|
||||
public function instantSave()
|
||||
{
|
||||
$this->submit();
|
||||
|
@ -502,9 +502,9 @@ public function isConfigurationChanged(bool $save = false)
|
||||
{
|
||||
$newConfigHash = $this->fqdn . $this->git_repository . $this->git_branch . $this->git_commit_sha . $this->build_pack . $this->static_image . $this->install_command . $this->build_command . $this->start_command . $this->port_exposes . $this->port_mappings . $this->base_directory . $this->publish_directory . $this->dockerfile . $this->dockerfile_location . $this->custom_labels;
|
||||
if ($this->pull_request_id === 0 || $this->pull_request_id === null) {
|
||||
$newConfigHash .= json_encode($this->environment_variables());
|
||||
$newConfigHash .= json_encode($this->environment_variables()->get('updated_at'));
|
||||
} else {
|
||||
$newConfigHash .= json_encode($this->environment_variables_preview->all());
|
||||
$newConfigHash .= json_encode($this->environment_variables_preview->get('updated_at'));
|
||||
}
|
||||
$newConfigHash = md5($newConfigHash);
|
||||
$oldConfigHash = data_get($this, 'config_hash');
|
||||
|
@ -21,9 +21,11 @@ class Team extends Model implements SendsDiscord, SendsEmail
|
||||
|
||||
protected static function booted()
|
||||
{
|
||||
// static::saved(function () {
|
||||
// refreshSession();
|
||||
// });
|
||||
static::saving(function ($team) {
|
||||
if (auth()->user()->isMember()) {
|
||||
throw new \Exception('You are not allowed to update this team.');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public function routeNotificationForDiscord()
|
||||
|
@ -127,6 +127,10 @@ public function isOwner()
|
||||
{
|
||||
return $this->role() === 'owner';
|
||||
}
|
||||
public function isMember()
|
||||
{
|
||||
return $this->role() === 'member';
|
||||
}
|
||||
public function isAdminFromSession()
|
||||
{
|
||||
if (auth()->user()->id === 0) {
|
||||
|
@ -7,7 +7,7 @@
|
||||
|
||||
// The release version of your application
|
||||
// Example with dynamic git hash: trim(exec('git --git-dir ' . base_path('.git') . ' log --pretty="%h" -n1 HEAD'))
|
||||
'release' => '4.0.0-beta.249',
|
||||
'release' => '4.0.0-beta.250',
|
||||
// When left empty or `null` the Laravel environment will be used
|
||||
'environment' => config('app.env'),
|
||||
|
||||
|
@ -1,3 +1,3 @@
|
||||
<?php
|
||||
|
||||
return '4.0.0-beta.249';
|
||||
return '4.0.0-beta.250';
|
||||
|
@ -2,9 +2,10 @@
|
||||
<h2>Servers</h2>
|
||||
<div class="">Server related configurations.</div>
|
||||
<div class="grid grid-cols-1 gap-4 py-4">
|
||||
<div class="flex gap-2">
|
||||
<div class="relative flex flex-col bg-white border cursor-default dark:text-white box-without-bg dark:bg-coolgray-100 w-96 dark:border-black">
|
||||
<div class="text-xl font-bold">Primary Server</div>
|
||||
<div class="flex flex-col gap-2">
|
||||
<h3>Primary Server</h3>
|
||||
<div
|
||||
class="relative flex flex-col bg-white border cursor-default dark:text-white box-without-bg dark:bg-coolgray-100 w-96 dark:border-black">
|
||||
@if (str($resource->realStatus())->startsWith('running'))
|
||||
<div title="{{ $resource->realStatus() }}" class="absolute bg-success -top-1 -left-1 badge ">
|
||||
</div>
|
||||
@ -12,26 +13,29 @@
|
||||
<div title="{{ $resource->realStatus() }}" class="absolute bg-error -top-1 -left-1 badge ">
|
||||
</div>
|
||||
@endif
|
||||
<div>
|
||||
<div class="box-title">
|
||||
Server: {{ data_get($resource, 'destination.server.name') }}
|
||||
</div>
|
||||
<div>
|
||||
<div class="box-description">
|
||||
Network: {{ data_get($resource, 'destination.network') }}
|
||||
</div>
|
||||
</div>
|
||||
@if ($resource?->additional_networks?->count() > 0)
|
||||
<x-forms.button
|
||||
wire:click="redeploy('{{ data_get($resource, 'destination.id') }}','{{ data_get($resource, 'destination.server.id') }}')">Deploy</x-forms.button>
|
||||
@if (str($resource->realStatus())->startsWith('running'))
|
||||
<x-forms.button isError
|
||||
wire:click="stop('{{ data_get($resource, 'destination.server.id') }}')">Stop</x-forms.button>
|
||||
@endif
|
||||
<div class="flex gap-2">
|
||||
<x-forms.button
|
||||
wire:click="redeploy('{{ data_get($resource, 'destination.id') }}','{{ data_get($resource, 'destination.server.id') }}')">Deploy</x-forms.button>
|
||||
@if (str($resource->realStatus())->startsWith('running'))
|
||||
<x-forms.button isError
|
||||
wire:click="stop('{{ data_get($resource, 'destination.server.id') }}')">Stop</x-forms.button>
|
||||
@endif
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
@if ($resource?->additional_networks?->count() > 0)
|
||||
<h3>Additional Server(s)</h3>
|
||||
@foreach ($resource->additional_networks as $destination)
|
||||
<div class="flex gap-2">
|
||||
<div class="relative flex flex-col box w-96">
|
||||
<div class="flex flex-col gap-2">
|
||||
<div class="relative flex flex-col w-full box">
|
||||
@if (str(data_get($destination, 'pivot.status'))->startsWith('running'))
|
||||
<div title="{{ data_get($destination, 'pivot.status') }}"
|
||||
class="absolute bg-success -top-1 -left-1 badge "></div>
|
||||
@ -40,28 +44,31 @@ class="absolute bg-success -top-1 -left-1 badge "></div>
|
||||
class="absolute bg-error -top-1 -left-1 badge "></div>
|
||||
@endif
|
||||
<div>
|
||||
Server: {{ data_get($destination, 'server.name') }}
|
||||
</div>
|
||||
<div>
|
||||
Network: {{ data_get($destination, 'network') }}
|
||||
<div class="box-title">
|
||||
Server: {{ data_get($destination, 'server.name') }}
|
||||
</div>
|
||||
<div class="box-description">
|
||||
Network: {{ data_get($destination, 'network') }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<x-forms.button
|
||||
wire:click="redeploy('{{ data_get($destination, 'id') }}','{{ data_get($destination, 'server.id') }}')">Deploy</x-forms.button>
|
||||
<x-forms.button
|
||||
wire:click="promote('{{ data_get($destination, 'id') }}','{{ data_get($destination, 'server.id') }}')">Promote
|
||||
to Primary </x-forms.button>
|
||||
@if (data_get_str($destination, 'pivot.status')->startsWith('running'))
|
||||
<x-forms.button isError
|
||||
wire:click="stop('{{ data_get($destination, 'server.id') }}')">Stop</x-forms.button>
|
||||
@endif
|
||||
<x-modal-confirmation
|
||||
action="removeServer({{ data_get($destination, 'id') }},{{ data_get($destination, 'server.id') }})"
|
||||
isErrorButton buttonTitle="Remove Server">
|
||||
This will stop the running application in this server and remove it as a deployment
|
||||
destination.<br><br>Please think again.
|
||||
</x-modal-confirmation>
|
||||
|
||||
<div class="flex gap-2">
|
||||
<x-forms.button
|
||||
wire:click="redeploy('{{ data_get($destination, 'id') }}','{{ data_get($destination, 'server.id') }}')">Deploy</x-forms.button>
|
||||
<x-forms.button
|
||||
wire:click="promote('{{ data_get($destination, 'id') }}','{{ data_get($destination, 'server.id') }}')">Promote
|
||||
to Primary </x-forms.button>
|
||||
@if (data_get_str($destination, 'pivot.status')->startsWith('running'))
|
||||
<x-forms.button isError
|
||||
wire:click="stop('{{ data_get($destination, 'server.id') }}')">Stop</x-forms.button>
|
||||
@endif
|
||||
<x-modal-confirmation
|
||||
action="removeServer({{ data_get($destination, 'id') }},{{ data_get($destination, 'server.id') }})"
|
||||
isErrorButton buttonTitle="Remove Server">
|
||||
This will stop the running application in this server and remove it as a deployment
|
||||
destination.<br><br>Please think again.
|
||||
</x-modal-confirmation>
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
@endif
|
||||
@ -75,10 +82,12 @@ class="absolute bg-error -top-1 -left-1 badge "></div>
|
||||
<div wire:click="addServer('{{ $network->id }}','{{ data_get($network, 'server.id') }}')"
|
||||
class="relative flex flex-col cursor-default dark:text-white box w-96">
|
||||
<div>
|
||||
Server: {{ data_get($network, 'server.name') }}
|
||||
</div>
|
||||
<div>
|
||||
Network: {{ data_get($network, 'name') }}
|
||||
<div class="box-title">
|
||||
Server: {{ data_get($network, 'server.name') }}
|
||||
</div>
|
||||
<div class="box-description">
|
||||
Network: {{ data_get($network, 'name') }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
|
@ -1,7 +1,7 @@
|
||||
{
|
||||
"coolify": {
|
||||
"v4": {
|
||||
"version": "4.0.0-beta.249"
|
||||
"version": "4.0.0-beta.250"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user