From 98c2056f53e6e5b410ce0ee6d8f52af243f58949 Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Wed, 17 Apr 2024 12:08:35 +0200 Subject: [PATCH 1/7] Fix issue with saving environment variables and update version numbers --- app/Jobs/ApplicationDeploymentJob.php | 8 ++++++++ config/sentry.php | 2 +- config/version.php | 2 +- versions.json | 2 +- 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/app/Jobs/ApplicationDeploymentJob.php b/app/Jobs/ApplicationDeploymentJob.php index 84fd6efcc..765dde287 100644 --- a/app/Jobs/ApplicationDeploymentJob.php +++ b/app/Jobs/ApplicationDeploymentJob.php @@ -791,6 +791,14 @@ private function save_environment_variables() "echo '{$this->saved_outputs->get('dotenv')->value()}' | tee $this->configuration_dir/.env > /dev/null" ] ); + } else { + $this->execute_remote_command( + [ + "command" => "rm -f $this->configuration_dir/.env", + "hidden" => true, + "ignore_errors" => true + ] + ); } $envs_base64 = base64_encode($envs->implode("\n")); $this->execute_remote_command( diff --git a/config/sentry.php b/config/sentry.php index 9c93ecb67..a1d034f96 100644 --- a/config/sentry.php +++ b/config/sentry.php @@ -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.259', + 'release' => '4.0.0-beta.260', // When left empty or `null` the Laravel environment will be used 'environment' => config('app.env'), diff --git a/config/version.php b/config/version.php index bcab84b3a..ebefe1d03 100644 --- a/config/version.php +++ b/config/version.php @@ -1,3 +1,3 @@ Date: Wed, 17 Apr 2024 12:13:44 +0200 Subject: [PATCH 2/7] Fix issue with sorting environment variables in ApplicationDeploymentJob.php --- app/Jobs/ApplicationDeploymentJob.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/Jobs/ApplicationDeploymentJob.php b/app/Jobs/ApplicationDeploymentJob.php index 765dde287..ced01c43c 100644 --- a/app/Jobs/ApplicationDeploymentJob.php +++ b/app/Jobs/ApplicationDeploymentJob.php @@ -767,6 +767,9 @@ private function save_environment_variables() $envs->push("SOURCE_COMMIT=unknown"); } } + $envs = $envs->sort(function ($a, $b) { + return strpos($a, '$') === false ? -1 : 1; + }); } if ($envs->isEmpty()) { From 4ab3f41665f9300d9052fb7cc935747992a321a0 Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Wed, 17 Apr 2024 12:47:45 +0200 Subject: [PATCH 3/7] Remove debug statement in remoteProcess.php --- bootstrap/helpers/remoteProcess.php | 1 - 1 file changed, 1 deletion(-) diff --git a/bootstrap/helpers/remoteProcess.php b/bootstrap/helpers/remoteProcess.php index 98255de76..85533550b 100644 --- a/bootstrap/helpers/remoteProcess.php +++ b/bootstrap/helpers/remoteProcess.php @@ -35,7 +35,6 @@ function remote_process( if ($server->isNonRoot()) { $command = parseCommandsByLineForSudo(collect($command), $server); } - ray($command); $command_string = implode("\n", $command); if (auth()->user()) { $teams = auth()->user()->teams->pluck('id'); From 0a3c20b08a323f1e4e595732023d1f731c31aa8f Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Wed, 17 Apr 2024 12:47:57 +0200 Subject: [PATCH 4/7] Fix issue with sorting environment variables in StackForm.php --- app/Livewire/Project/Service/StackForm.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Livewire/Project/Service/StackForm.php b/app/Livewire/Project/Service/StackForm.php index dee85ec54..03bf99245 100644 --- a/app/Livewire/Project/Service/StackForm.php +++ b/app/Livewire/Project/Service/StackForm.php @@ -42,7 +42,7 @@ public function mount() $this->validationAttributes["fields.$key.value"] = $fieldKey; } } - $this->fields = $this->fields->sort(); + $this->fields = $this->fields->sortDesc(); } public function saveCompose($raw) { From 4381792b05e95d78dcd348c18960a7c39eb4f5cf Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Wed, 17 Apr 2024 12:48:01 +0200 Subject: [PATCH 5/7] Refactor variable name display in stack-form.blade.php --- .../views/livewire/project/service/stack-form.blade.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/resources/views/livewire/project/service/stack-form.blade.php b/resources/views/livewire/project/service/stack-form.blade.php index 4adb684f9..0145c2baf 100644 --- a/resources/views/livewire/project/service/stack-form.blade.php +++ b/resources/views/livewire/project/service/stack-form.blade.php @@ -23,10 +23,11 @@
@foreach ($fields as $serviceName => $field) +
{{ data_get($field, 'serviceName') }}{{ data_get($field, 'name') }}
@endforeach
From 3656adf059ef0641312ee8886e97e35da572107d Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Wed, 17 Apr 2024 12:48:04 +0200 Subject: [PATCH 6/7] Add Tolgee authentication fields to Service.php --- app/Models/Service.php | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/app/Models/Service.php b/app/Models/Service.php index 49939ee8b..5de1a9745 100644 --- a/app/Models/Service.php +++ b/app/Models/Service.php @@ -150,6 +150,29 @@ public function extraFields() foreach ($applications as $application) { $image = str($application->image)->before(':')->value(); switch ($image) { + case str($image)?->contains('tolgee'): + $data = collect([]); + $admin_password = $this->environment_variables()->where('key', 'SERVICE_PASSWORD_TOLGEE')->first(); + $data = $data->merge([ + 'Admin User' => [ + 'key' => 'TOLGEE_AUTHENTICATION_INITIAL_USERNAME', + 'value' => 'admin', + 'readonly' => true, + 'rules' => 'required', + ], + ]); + if ($admin_password) { + $data = $data->merge([ + 'Admin Password' => [ + 'key' => 'SERVICE_PASSWORD_TOLGEE', + 'value' => data_get($admin_password, 'value'), + 'rules' => 'required', + 'isPassword' => true, + ], + ]); + } + $fields->put('Tolgee', $data); + break; case str($image)?->contains('logto'): $data = collect([]); $logto_endpoint = $this->environment_variables()->where('key', 'LOGTO_ENDPOINT')->first(); From ca5f52c48c1ca0dbf9a003d90a9eca5913491a42 Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Wed, 17 Apr 2024 12:48:11 +0200 Subject: [PATCH 7/7] Add Tolgee service to compose file and service templates --- templates/compose/tolgee.yaml | 42 ++++++++++++++++++++++++++++++++ templates/service-templates.json | 14 +++++++++++ 2 files changed, 56 insertions(+) create mode 100644 templates/compose/tolgee.yaml diff --git a/templates/compose/tolgee.yaml b/templates/compose/tolgee.yaml new file mode 100644 index 000000000..6e6302526 --- /dev/null +++ b/templates/compose/tolgee.yaml @@ -0,0 +1,42 @@ +# documentation: https://tolgee.io/ +# slogan: Tolgee is a localization management platform for developers and translators. +# tags: localization,translation,management,platform +# logo: svgs/tolgee.svg +# port: 8080 + +services: + tolgee: + image: tolgee/tolgee + environment: + - SERVICE_FQDN_TOLGEE_8080 + - TOLGEE_AUTHENTICATION_ENABLED=true + - TOLGEE_AUTHENTICATION_INITIAL_PASSWORD=$SERVICE_PASSWORD_TOLGEE + - TOLGEE_AUTHENTICATION_INITIAL_USERNAME=admin + - TOLGEE_AUTHENTICATION_JWT_SECRET=$SERVICE_PASSWORD_JWT + - TOLGEE_POSTGRES_AUTOSTART_ENABLED=false + - SPRING_DATASOURCE_URL=jdbc:postgresql://postgresql:5432/${POSTGRES_DB:-tolgee} + - SPRING_DATASOURCE_USERNAME=${SERVICE_USER_POSTGRESQL} + - SPRING_DATASOURCE_PASSWORD=${SERVICE_PASSWORD_POSTGRESQL} + volumes: + - tolgee-data:/data + healthcheck: + test: ["CMD", "wget", "-q", "--spider", "http://localhost:8080"] + interval: 5s + timeout: 20s + retries: 10 + depends_on: + postgresql: + condition: service_healthy + postgresql: + image: postgres:16-alpine + volumes: + - tolgee-postgresql-data:/var/lib/postgresql/data + environment: + - POSTGRES_USER=${SERVICE_USER_POSTGRESQL} + - POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRESQL} + - POSTGRES_DB=${POSTGRESQL_DATABASE:-tolgee} + healthcheck: + test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"] + interval: 5s + timeout: 20s + retries: 10 diff --git a/templates/service-templates.json b/templates/service-templates.json index 7c25dbda4..725d4dca8 100644 --- a/templates/service-templates.json +++ b/templates/service-templates.json @@ -867,6 +867,20 @@ "minversion": "0.0.0", "port": "8384" }, + "tolgee": { + "documentation": "https:\/\/tolgee.io\/", + "slogan": "Tolgee is a localization management platform for developers and translators.", + "compose": "c2VydmljZXM6CiAgdG9sZ2VlOgogICAgaW1hZ2U6IHRvbGdlZS90b2xnZWUKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfRlFETl9UT0xHRUVfODA4MAogICAgICAtIFRPTEdFRV9BVVRIRU5USUNBVElPTl9FTkFCTEVEPXRydWUKICAgICAgLSBUT0xHRUVfQVVUSEVOVElDQVRJT05fSU5JVElBTF9QQVNTV09SRD0kU0VSVklDRV9QQVNTV09SRF9UT0xHRUUKICAgICAgLSBUT0xHRUVfQVVUSEVOVElDQVRJT05fSU5JVElBTF9VU0VSTkFNRT1hZG1pbgogICAgICAtIFRPTEdFRV9BVVRIRU5USUNBVElPTl9KV1RfU0VDUkVUPSRTRVJWSUNFX1BBU1NXT1JEX0pXVAogICAgICAtIFRPTEdFRV9QT1NUR1JFU19BVVRPU1RBUlRfRU5BQkxFRD1mYWxzZQogICAgICAtICdTUFJJTkdfREFUQVNPVVJDRV9VUkw9amRiYzpwb3N0Z3Jlc3FsOi8vcG9zdGdyZXNxbDo1NDMyLyR7UE9TVEdSRVNfREI6LXRvbGdlZX0nCiAgICAgIC0gJ1NQUklOR19EQVRBU09VUkNFX1VTRVJOQU1FPSR7U0VSVklDRV9VU0VSX1BPU1RHUkVTUUx9JwogICAgICAtICdTUFJJTkdfREFUQVNPVVJDRV9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVNRTH0nCiAgICB2b2x1bWVzOgogICAgICAtICd0b2xnZWUtZGF0YTovZGF0YScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSB3Z2V0CiAgICAgICAgLSAnLXEnCiAgICAgICAgLSAnLS1zcGlkZXInCiAgICAgICAgLSAnaHR0cDovL2xvY2FsaG9zdDo4MDgwJwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCiAgICBkZXBlbmRzX29uOgogICAgICBwb3N0Z3Jlc3FsOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgcG9zdGdyZXNxbDoKICAgIGltYWdlOiAncG9zdGdyZXM6MTYtYWxwaW5lJwogICAgdm9sdW1lczoKICAgICAgLSAndG9sZ2VlLXBvc3RncmVzcWwtZGF0YTovdmFyL2xpYi9wb3N0Z3Jlc3FsL2RhdGEnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnUE9TVEdSRVNfVVNFUj0ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU1FMfScKICAgICAgLSAnUE9TVEdSRVNfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTUUx9JwogICAgICAtICdQT1NUR1JFU19EQj0ke1BPU1RHUkVTUUxfREFUQUJBU0U6LXRvbGdlZX0nCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gJ3BnX2lzcmVhZHkgLVUgJCR7UE9TVEdSRVNfVVNFUn0gLWQgJCR7UE9TVEdSRVNfREJ9JwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCg==", + "tags": [ + "localization", + "translation", + "management", + "platform" + ], + "logo": "svgs\/tolgee.svg", + "minversion": "0.0.0", + "port": "8080" + }, "trigger-with-external-database": { "documentation": "https:\/\/trigger.dev", "slogan": "The open source Background Jobs framework for TypeScript",