fix: only set status in case the last command block is finished

This commit is contained in:
Andras Bacsai 2023-03-31 18:26:38 +02:00
parent cd31ec8db1
commit 9f4a7384b2
3 changed files with 14 additions and 9 deletions

View File

@ -16,6 +16,8 @@ class RunRemoteProcess
public bool $hideFromOutput;
public bool $setStatus;
protected $timeStart;
protected $currentTime;
@ -31,7 +33,7 @@ class RunRemoteProcess
/**
* Create a new job instance.
*/
public function __construct(Activity $activity, bool $hideFromOutput)
public function __construct(Activity $activity, bool $hideFromOutput, bool $setStatus)
{
if ($activity->getExtraProperty('type') !== ActivityTypes::REMOTE_PROCESS->value && $activity->getExtraProperty('type') !== ActivityTypes::DEPLOYMENT->value) {
@ -40,6 +42,7 @@ public function __construct(Activity $activity, bool $hideFromOutput)
$this->activity = $activity;
$this->hideFromOutput = $hideFromOutput;
$this->setStatus = $setStatus;
}
public function __invoke(): ProcessResult
@ -51,17 +54,18 @@ public function __invoke(): ProcessResult
$processResult = Process::run($this->getCommand(), $this->handleOutput(...));
$status = match ($processResult->exitCode()) {
0 => ProcessStatus::FINISHED,
default => ProcessStatus::ERROR,
};
$status = $processResult->exitCode() != 0 ? ProcessStatus::ERROR : ($this->setStatus ? ProcessStatus::FINISHED : null);
$this->activity->properties = $this->activity->properties->merge([
'exitCode' => $processResult->exitCode(),
'stdout' => $this->hideFromOutput || $processResult->output(),
'stderr' => $processResult->errorOutput(),
'status' => $status,
]);
if (isset($status)) {
$this->activity->properties = $this->activity->properties->merge([
'status' => $status->value,
]);
}
$this->activity->save();

View File

@ -20,7 +20,7 @@ public function polling()
$this->activity?->refresh();
}
if (data_get($this->activity, 'properties.exitCode') !== null) {
if (data_get($this->activity, 'properties.status') == 'finished' || data_get($this->activity, 'properties.status') == 'failed' ) {
$this->isKeepAliveOn = false;
}
}

View File

@ -129,7 +129,7 @@ public function handle(): void
$this->execute_in_builder("docker compose --project-directory {$this->workdir} up -d"),
"echo 'Done. 🎉'",
"docker stop -t 0 {$this->deployment_uuid} >/dev/null"
]);
], setStatus: true);
}
private function execute_in_builder(string $command)
@ -244,7 +244,7 @@ private function set_labels_for_applications()
return $labels;
}
private function executeNow(array $command, string $propertyName = null, bool $hideFromOutput = false)
private function executeNow(array $command, string $propertyName = null, bool $hideFromOutput = false, $setStatus = false)
{
$commandText = collect($command)->implode("\n");
@ -256,6 +256,7 @@ private function executeNow(array $command, string $propertyName = null, bool $h
$remoteProcess = resolve(RunRemoteProcess::class, [
'activity' => $this->activity,
'hideFromOutput' => $hideFromOutput,
'setStatus' => $setStatus,
]);
if ($propertyName) {