feat: preserve git repository
This commit is contained in:
parent
1b6114036a
commit
2529496594
@ -157,6 +157,8 @@ class ApplicationDeploymentJob implements ShouldBeEncrypted, ShouldQueue
|
|||||||
|
|
||||||
private ?string $coolify_variables = null;
|
private ?string $coolify_variables = null;
|
||||||
|
|
||||||
|
private bool $preserveRepository = true;
|
||||||
|
|
||||||
public $tries = 1;
|
public $tries = 1;
|
||||||
|
|
||||||
public function __construct(int $application_deployment_queue_id)
|
public function __construct(int $application_deployment_queue_id)
|
||||||
@ -187,6 +189,7 @@ public function __construct(int $application_deployment_queue_id)
|
|||||||
$this->server = $this->mainServer = $this->destination->server;
|
$this->server = $this->mainServer = $this->destination->server;
|
||||||
$this->serverUser = $this->server->user;
|
$this->serverUser = $this->server->user;
|
||||||
$this->is_this_additional_server = $this->application->additional_servers()->wherePivot('server_id', $this->server->id)->count() > 0;
|
$this->is_this_additional_server = $this->application->additional_servers()->wherePivot('server_id', $this->server->id)->count() > 0;
|
||||||
|
$this->preserveRepository = $this->application->settings->is_preserve_repository_enabled;
|
||||||
|
|
||||||
$this->basedir = $this->application->generateBaseDir($this->deployment_uuid);
|
$this->basedir = $this->application->generateBaseDir($this->deployment_uuid);
|
||||||
$this->workdir = "{$this->basedir}".rtrim($this->application->base_directory, '/');
|
$this->workdir = "{$this->basedir}".rtrim($this->application->base_directory, '/');
|
||||||
@ -296,13 +299,13 @@ public function handle(): void
|
|||||||
} else {
|
} else {
|
||||||
$this->write_deployment_configurations();
|
$this->write_deployment_configurations();
|
||||||
}
|
}
|
||||||
$this->execute_remote_command(
|
// $this->execute_remote_command(
|
||||||
[
|
// [
|
||||||
"docker rm -f {$this->deployment_uuid} >/dev/null 2>&1",
|
// "docker rm -f {$this->deployment_uuid} >/dev/null 2>&1",
|
||||||
'hidden' => true,
|
// 'hidden' => true,
|
||||||
'ignore_errors' => true,
|
// 'ignore_errors' => true,
|
||||||
]
|
// ]
|
||||||
);
|
// );
|
||||||
|
|
||||||
// $this->execute_remote_command(
|
// $this->execute_remote_command(
|
||||||
// [
|
// [
|
||||||
@ -517,6 +520,8 @@ private function deploy_docker_compose_buildpack()
|
|||||||
$command .= " --env-file {$this->workdir}/{$this->env_filename}";
|
$command .= " --env-file {$this->workdir}/{$this->env_filename}";
|
||||||
}
|
}
|
||||||
$command .= " --project-name {$this->application->uuid} --project-directory {$this->workdir} -f {$this->workdir}{$this->docker_compose_location} up -d";
|
$command .= " --project-name {$this->application->uuid} --project-directory {$this->workdir} -f {$this->workdir}{$this->docker_compose_location} up -d";
|
||||||
|
ray($command);
|
||||||
|
|
||||||
$this->execute_remote_command(
|
$this->execute_remote_command(
|
||||||
[executeInDocker($this->deployment_uuid, $command), 'hidden' => true],
|
[executeInDocker($this->deployment_uuid, $command), 'hidden' => true],
|
||||||
);
|
);
|
||||||
@ -605,6 +610,28 @@ private function deploy_static_buildpack()
|
|||||||
|
|
||||||
private function write_deployment_configurations()
|
private function write_deployment_configurations()
|
||||||
{
|
{
|
||||||
|
if ($this->preserveRepository) {
|
||||||
|
if ($this->use_build_server) {
|
||||||
|
$this->server = $this->original_server;
|
||||||
|
}
|
||||||
|
if (str($this->configuration_dir)->isNotEmpty()) {
|
||||||
|
ray("docker cp {$this->deployment_uuid}:{$this->workdir} {$this->configuration_dir}");
|
||||||
|
$this->execute_remote_command(
|
||||||
|
[
|
||||||
|
"mkdir -p $this->configuration_dir",
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"rm -rf $this->configuration_dir/{*,.*}",
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"docker cp {$this->deployment_uuid}:{$this->workdir}/. {$this->configuration_dir}",
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
if ($this->use_build_server) {
|
||||||
|
$this->server = $this->build_server;
|
||||||
|
}
|
||||||
|
}
|
||||||
if (isset($this->docker_compose_base64)) {
|
if (isset($this->docker_compose_base64)) {
|
||||||
if ($this->use_build_server) {
|
if ($this->use_build_server) {
|
||||||
$this->server = $this->original_server;
|
$this->server = $this->original_server;
|
||||||
|
@ -85,6 +85,7 @@ class General extends Component
|
|||||||
'application.settings.is_build_server_enabled' => 'boolean|required',
|
'application.settings.is_build_server_enabled' => 'boolean|required',
|
||||||
'application.settings.is_container_label_escape_enabled' => 'boolean|required',
|
'application.settings.is_container_label_escape_enabled' => 'boolean|required',
|
||||||
'application.settings.is_container_label_readonly_enabled' => 'boolean|required',
|
'application.settings.is_container_label_readonly_enabled' => 'boolean|required',
|
||||||
|
'application.settings.is_preserve_repository_enabled' => 'boolean|required',
|
||||||
'application.watch_paths' => 'nullable',
|
'application.watch_paths' => 'nullable',
|
||||||
'application.redirect' => 'string|required',
|
'application.redirect' => 'string|required',
|
||||||
];
|
];
|
||||||
@ -121,6 +122,7 @@ class General extends Component
|
|||||||
'application.settings.is_build_server_enabled' => 'Is build server enabled',
|
'application.settings.is_build_server_enabled' => 'Is build server enabled',
|
||||||
'application.settings.is_container_label_escape_enabled' => 'Is container label escape enabled',
|
'application.settings.is_container_label_escape_enabled' => 'Is container label escape enabled',
|
||||||
'application.settings.is_container_label_readonly_enabled' => 'Is container label readonly',
|
'application.settings.is_container_label_readonly_enabled' => 'Is container label readonly',
|
||||||
|
'application.settings.is_preserve_repository_enabled' => 'Is preserve repository enabled',
|
||||||
'application.watch_paths' => 'Watch paths',
|
'application.watch_paths' => 'Watch paths',
|
||||||
'application.redirect' => 'Redirect',
|
'application.redirect' => 'Redirect',
|
||||||
];
|
];
|
||||||
|
@ -0,0 +1,28 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*/
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::table('application_settings', function (Blueprint $table) {
|
||||||
|
$table->boolean('is_preserve_repository_enabled')->default(false);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::table('application_settings', function (Blueprint $table) {
|
||||||
|
$table->dropColumn('is_preserve_repository_enabled');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
@ -16,12 +16,13 @@
|
|||||||
<x-forms.checkbox
|
<x-forms.checkbox
|
||||||
helper="Your application will be available only on https if your domain starts with https://..."
|
helper="Your application will be available only on https if your domain starts with https://..."
|
||||||
instantSave id="is_force_https_enabled" label="Force Https" />
|
instantSave id="is_force_https_enabled" label="Force Https" />
|
||||||
<x-forms.checkbox label="Enable gzip compression"
|
<x-forms.checkbox label="Enable Gzip Compression"
|
||||||
helper="You can disable gzip compression if you want. Some services are compressing data by default. In this case, you do not need this."
|
helper="You can disable gzip compression if you want. Some services are compressing data by default. In this case, you do not need this."
|
||||||
instantSave id="is_gzip_enabled" />
|
instantSave id="is_gzip_enabled" />
|
||||||
<x-forms.checkbox helper="Strip Prefix is used to remove prefixes from paths. Like /api/ to /api."
|
<x-forms.checkbox helper="Strip Prefix is used to remove prefixes from paths. Like /api/ to /api."
|
||||||
instantSave id="is_stripprefix_enabled" label="Strip Prefixes" />
|
instantSave id="is_stripprefix_enabled" label="Strip Prefixes" />
|
||||||
@if ($application->build_pack === 'dockercompose')
|
@if ($application->build_pack === 'dockercompose')
|
||||||
|
<h3>Docker Compose</h3>
|
||||||
<x-forms.checkbox instantSave id="application.settings.is_raw_compose_deployment_enabled"
|
<x-forms.checkbox instantSave id="application.settings.is_raw_compose_deployment_enabled"
|
||||||
label="Raw Compose Deployment"
|
label="Raw Compose Deployment"
|
||||||
helper="WARNING: Advanced use cases only. Your docker compose file will be deployed as-is. Nothing is modified by Coolify. You need to configure the proxy parts. More info in the <a class='underline dark:text-white' href='https://coolify.io/docs/knowledge-base/docker/compose#raw-docker-compose-deployment'>documentation.</a>" />
|
helper="WARNING: Advanced use cases only. Your docker compose file will be deployed as-is. Nothing is modified by Coolify. You need to configure the proxy parts. More info in the <a class='underline dark:text-white' href='https://coolify.io/docs/knowledge-base/docker/compose#raw-docker-compose-deployment'>documentation.</a>" />
|
||||||
|
@ -166,6 +166,11 @@ class="underline" href="https://coolify.io/docs/knowledge-base/docker/registry"
|
|||||||
id="application.docker_compose_location" label="Docker Compose Location"
|
id="application.docker_compose_location" label="Docker Compose Location"
|
||||||
helper="It is calculated together with the Base Directory:<br><span class='dark:text-warning'>{{ Str::start($application->base_directory . $application->docker_compose_location, '/') }}</span>" />
|
helper="It is calculated together with the Base Directory:<br><span class='dark:text-warning'>{{ Str::start($application->base_directory . $application->docker_compose_location, '/') }}</span>" />
|
||||||
</div>
|
</div>
|
||||||
|
<div class="w-96">
|
||||||
|
<x-forms.checkbox instantSave id="application.settings.is_preserve_repository_enabled"
|
||||||
|
label="Preserve Repository During Deployment"
|
||||||
|
helper="Git repository (based on the base directory settings) will be copied to the deployment directory." />
|
||||||
|
</div>
|
||||||
<div class="pt-4">The following commands are for advanced use cases. Only modify them if you
|
<div class="pt-4">The following commands are for advanced use cases. Only modify them if you
|
||||||
know what are
|
know what are
|
||||||
you doing.</div>
|
you doing.</div>
|
||||||
|
Loading…
Reference in New Issue
Block a user