From ca35e536dbc66fb741ae172b70f0f6b9aef0eb50 Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Fri, 17 May 2024 14:35:31 +0200 Subject: [PATCH 1/4] chore: Update version to 4.0.0-beta.283 --- config/sentry.php | 2 +- config/version.php | 2 +- versions.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/config/sentry.php b/config/sentry.php index 52732a7c8..d5fc80131 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.282', + 'release' => '4.0.0-beta.283', // 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 5ecc10c24..3c5085a0d 100644 --- a/config/version.php +++ b/config/version.php @@ -1,3 +1,3 @@ Date: Fri, 17 May 2024 14:35:37 +0200 Subject: [PATCH 2/4] feat: Update healthcheck test in StartMongodb action --- app/Actions/Database/StartMongodb.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/Actions/Database/StartMongodb.php b/app/Actions/Database/StartMongodb.php index 99403c2c1..46b426ad8 100644 --- a/app/Actions/Database/StartMongodb.php +++ b/app/Actions/Database/StartMongodb.php @@ -50,8 +50,9 @@ public function handle(StandaloneMongodb $database) ], 'healthcheck' => [ 'test' => [ - 'CMD-SHELL', - 'mongosh --eval "printjson(db.runCommand(\"ping\"))"' + "CMD", + "echo", + "ok" ], 'interval' => '5s', 'timeout' => '5s', From 73bc7b045e8d90678ac9b6c1f649d823fd37463b Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Fri, 17 May 2024 15:28:54 +0200 Subject: [PATCH 3/4] feat: Add pull_request_id filter to get_last_successful_deployment method in Application model --- app/Models/Application.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Models/Application.php b/app/Models/Application.php index c4a6a18e2..3d0b92aaf 100644 --- a/app/Models/Application.php +++ b/app/Models/Application.php @@ -459,7 +459,7 @@ public function isDeploymentInprogress() } public function get_last_successful_deployment() { - return ApplicationDeploymentQueue::where('application_id', $this->id)->where('status', 'finished')->orderBy('created_at', 'desc')->first(); + return ApplicationDeploymentQueue::where('application_id', $this->id)->where('status', 'finished')->where('pull_request_id', 0)->orderBy('created_at', 'desc')->first(); } public function get_last_days_deployments() { From ead672afb28d63b722d7e6aea2b71c086316dc33 Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Fri, 17 May 2024 15:30:27 +0200 Subject: [PATCH 4/4] fix: PR deployments have good predefined envs --- app/Jobs/ApplicationDeploymentJob.php | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/app/Jobs/ApplicationDeploymentJob.php b/app/Jobs/ApplicationDeploymentJob.php index 8f9c14206..2107498dc 100644 --- a/app/Jobs/ApplicationDeploymentJob.php +++ b/app/Jobs/ApplicationDeploymentJob.php @@ -713,6 +713,10 @@ private function check_image_locally_or_remotely() private function save_environment_variables() { $envs = collect([]); + $local_branch = $this->branch; + if ($this->pull_request_id !== 0) { + $local_branch = "pull/{$this->pull_request_id}/head"; + } $sort = $this->application->settings->is_env_sorting_enabled; if ($sort) { $sorted_environment_variables = $this->application->environment_variables->sortBy('key'); @@ -740,7 +744,7 @@ private function save_environment_variables() $envs->push("COOLIFY_URL={$url}"); } if ($this->application->environment_variables_preview->where('key', 'COOLIFY_BRANCH')->isEmpty()) { - $envs->push("COOLIFY_BRANCH={$this->application->git_branch}"); + $envs->push("COOLIFY_BRANCH={$local_branch}"); } foreach ($sorted_environment_variables_preview as $env) { $real_value = $env->real_value; @@ -781,7 +785,7 @@ private function save_environment_variables() $envs->push("COOLIFY_URL={$url}"); } if ($this->application->environment_variables_preview->where('key', 'COOLIFY_BRANCH')->isEmpty()) { - $envs->push("COOLIFY_BRANCH={$this->application->git_branch}"); + $envs->push("COOLIFY_BRANCH={$local_branch}"); } foreach ($sorted_environment_variables as $env) { $real_value = $env->real_value; @@ -995,6 +999,7 @@ private function deploy_pull_request() $this->generate_image_names(); $this->application_deployment_queue->addLogEntry("Starting pull request (#{$this->pull_request_id}) deployment of {$this->customRepository}:{$this->application->git_branch}."); $this->prepare_builder_image(); + $this->check_git_if_build_needed(); $this->clone_repository(); $this->set_base_dir(); $this->cleanup_git(); @@ -1124,6 +1129,10 @@ private function set_coolify_variables() private function check_git_if_build_needed() { $this->generate_git_import_commands(); + $local_branch = $this->branch; + if ($this->pull_request_id !== 0) { + $local_branch = "pull/{$this->pull_request_id}/head"; + } $private_key = data_get($this->application, 'private_key.private_key'); if ($private_key) { $private_key = base64_encode($private_key); @@ -1138,7 +1147,7 @@ private function check_git_if_build_needed() executeInDocker($this->deployment_uuid, "chmod 600 /root/.ssh/id_rsa") ], [ - executeInDocker($this->deployment_uuid, "GIT_SSH_COMMAND=\"ssh -o ConnectTimeout=30 -p {$this->customPort} -o Port={$this->customPort} -o LogLevel=ERROR -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -i /root/.ssh/id_rsa\" git ls-remote {$this->fullRepoUrl} {$this->branch}"), + executeInDocker($this->deployment_uuid, "GIT_SSH_COMMAND=\"ssh -o ConnectTimeout=30 -p {$this->customPort} -o Port={$this->customPort} -o LogLevel=ERROR -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -i /root/.ssh/id_rsa\" git ls-remote {$this->fullRepoUrl} {$local_branch}"), "hidden" => true, "save" => "git_commit_sha" ], @@ -1146,12 +1155,13 @@ private function check_git_if_build_needed() } else { $this->execute_remote_command( [ - executeInDocker($this->deployment_uuid, "GIT_SSH_COMMAND=\"ssh -o ConnectTimeout=30 -p {$this->customPort} -o Port={$this->customPort} -o LogLevel=ERROR -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null\" git ls-remote {$this->fullRepoUrl} {$this->branch}"), + executeInDocker($this->deployment_uuid, "GIT_SSH_COMMAND=\"ssh -o ConnectTimeout=30 -p {$this->customPort} -o Port={$this->customPort} -o LogLevel=ERROR -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null\" git ls-remote {$this->fullRepoUrl} {$local_branch}"), "hidden" => true, "save" => "git_commit_sha" ], ); } + ray("GIT_SSH_COMMAND=\"ssh -o ConnectTimeout=30 -p {$this->customPort} -o Port={$this->customPort} -o LogLevel=ERROR -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null\" git ls-remote {$this->fullRepoUrl} {$local_branch}"); if ($this->saved_outputs->get('git_commit_sha') && !$this->rollback) { $this->commit = $this->saved_outputs->get('git_commit_sha')->before("\t"); $this->application_deployment_queue->commit = $this->commit; @@ -1167,6 +1177,7 @@ private function clone_repository() if ($this->pull_request_id !== 0) { $this->application_deployment_queue->addLogEntry("Checking out tag pull/{$this->pull_request_id}/head."); } + ray($importCommands); $this->execute_remote_command( [ $importCommands, "hidden" => true @@ -1180,6 +1191,8 @@ private function clone_repository() "save" => "commit_message" ] ); + ray($this->saved_outputs->get('commit_message')); + raY($this->commit); if ($this->saved_outputs->get('commit_message')) { $commit_message = str($this->saved_outputs->get('commit_message'))->limit(47); $this->application_deployment_queue->commit_message = $commit_message->value();