fix: only set status in case the last command block is finished
This commit is contained in:
parent
cd31ec8db1
commit
9f4a7384b2
@ -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();
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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) {
|
||||
|
Loading…
Reference in New Issue
Block a user