|
|
|
@ -963,9 +963,23 @@ private function health_check()
|
|
|
|
|
"save" => "health_check",
|
|
|
|
|
"append" => false
|
|
|
|
|
],
|
|
|
|
|
|
|
|
|
|
[
|
|
|
|
|
"docker inspect --format='{{json .State.Health.Log}}' {$this->container_name}",
|
|
|
|
|
"hidden" => true,
|
|
|
|
|
"save" => "health_check_logs",
|
|
|
|
|
"append" => false
|
|
|
|
|
],
|
|
|
|
|
);
|
|
|
|
|
$this->application_deployment_queue->addLogEntry("Attempt {$counter} of {$this->application->health_check_retries} | Healthcheck status: {$this->saved_outputs->get('health_check')}");
|
|
|
|
|
$health_check_logs = data_get(collect(json_decode($this->saved_outputs->get('health_check_logs')))->last(), 'Output', '(no logs)');
|
|
|
|
|
if (empty($health_check_logs)) {
|
|
|
|
|
$health_check_logs = '(no logs)';
|
|
|
|
|
}
|
|
|
|
|
$health_check_return_code = data_get(collect(json_decode($this->saved_outputs->get('health_check_logs')))->last(), 'ExitCode', '(no return code)');
|
|
|
|
|
if ($health_check_logs !== '(no logs)' || $health_check_return_code !== '(no return code)') {
|
|
|
|
|
$this->application_deployment_queue->addLogEntry("Healthcheck logs: {$health_check_logs} | Return code: {$health_check_return_code}");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (Str::of($this->saved_outputs->get('health_check'))->replace('"', '')->value() === 'healthy') {
|
|
|
|
|
$this->newVersionIsHealthy = true;
|
|
|
|
|
$this->application->update(['status' => 'running']);
|
|
|
|
@ -1618,12 +1632,12 @@ private function generate_healthcheck_commands()
|
|
|
|
|
if ($this->application->health_check_path) {
|
|
|
|
|
$this->full_healthcheck_url = "{$this->application->health_check_method}: {$this->application->health_check_scheme}://{$this->application->health_check_host}:{$health_check_port}{$this->application->health_check_path}";
|
|
|
|
|
$generated_healthchecks_commands = [
|
|
|
|
|
"curl -o /dev/null -w \"%{http_code}\" -s -X {$this->application->health_check_method} -f {$this->application->health_check_scheme}://{$this->application->health_check_host}:{$health_check_port}{$this->application->health_check_path} | grep -q \"{$this->application->health_check_return_code}\" || wget --save-headers -O - {$this->application->health_check_scheme}://{$this->application->health_check_host}:{$health_check_port}{$this->application->health_check_path} 2>/dev/null |grep HTTP/ |grep -q \"{$this->application->health_check_return_code}\" || exit 1"
|
|
|
|
|
"curl -s -X {$this->application->health_check_method} -f {$this->application->health_check_scheme}://{$this->application->health_check_host}:{$health_check_port}{$this->application->health_check_path} > /dev/null || wget -q -O- {$this->application->health_check_scheme}://{$this->application->health_check_host}:{$health_check_port}{$this->application->health_check_path} > /dev/null || exit 1"
|
|
|
|
|
];
|
|
|
|
|
} else {
|
|
|
|
|
$this->full_healthcheck_url = "{$this->application->health_check_method}: {$this->application->health_check_scheme}://{$this->application->health_check_host}:{$health_check_port}/";
|
|
|
|
|
$generated_healthchecks_commands = [
|
|
|
|
|
"curl -o /dev/null -w \"%{http_code}\" -s -X {$this->application->health_check_method} -f {$this->application->health_check_scheme}://{$this->application->health_check_host}:{$health_check_port}/ | grep -q \"{$this->application->health_check_return_code}\" || wget --save-headers -O - {$this->application->health_check_scheme}://{$this->application->health_check_host}:{$health_check_port}/ 2>/dev/null |grep HTTP/ |grep -q \"{$this->application->health_check_return_code}\" || exit 1"
|
|
|
|
|
"curl -s -X {$this->application->health_check_method} -f {$this->application->health_check_scheme}://{$this->application->health_check_host}:{$health_check_port}/ > /dev/null || wget -q -O- {$this->application->health_check_scheme}://{$this->application->health_check_host}:{$health_check_port}/ > /dev/null || exit 1"
|
|
|
|
|
];
|
|
|
|
|
}
|
|
|
|
|
return implode(' ', $generated_healthchecks_commands);
|
|
|
|
|