Суть такая - при запуске пайплайна в gitlab тот в вебхуке выдает подробные данные, проблема в том, что все этапы выдаются рандомно, а мне нужно сохранять их в правильном порядке и через телеграм бота получать сообщения об их статусе
Каким образом можно настроить правильное получение этапов?
Мой код:
if ($json = file_get_contents('php://input')) {
$print_json = print_r($json, true);
$arr = explode(',', $print_json);
for ($i = 30; $i <= 500; $i++) { // $i это номер строки в массиве json'a
if (substr($arr[$i], 1, 5) == 'stage') { // Если в строке попался stage
$stage = substr(substr($arr[$i], 9), 0, -1);
$job_name = substr(substr($arr[$i + 1], 8), 0, -1);
$status = substr(substr($arr[$i + 2], 10), 0, -1);
$finished_at = substr(substr($arr[$i + 5], 15), 0, -1);
$duration = substr(substr($arr[$i + 6], 11), 0, -1);
$first_stage = substr(substr($arr[9], 11), 0, -1); // Самый первый этап
$post = [
'chat_id' => 915597301,
'text' => $first_stage,
];
sendRequest('sendMessage', $post);
$count = 1;
for ($x = 10; $x <= 30; $x++) { // Промежуточные этапы
$intermediate_stages = substr($arr[$x], 0);
if (substr($arr[$x], -1) == ']') {
break;
}
$post = [
'chat_id' => 915597301,
'text' => substr(substr($arr[$x], 1), 0, -1),
];
sendRequest('sendMessage', $post);
$count += 1;
}
if ($count > 2) { // Последний этап
$last_stage = substr(substr($arr[$x], 1), 0, -2);
$post = [
'chat_id' => 915597301,
'text' => $last_stage,
];
sendRequest('sendMessage', $post);
}
if ($status == 'created' || $status == 'running') {
$post = [
'chat_id' => 915597301,
'text' => ' <b>Webhook caught pipeline event!</b>',
'parse_mode' => 'html'
];
sendRequest('sendMessage', $post);
} elseif ($status == 'success') {
$post = [
'chat_id' => 915597301,
'text' => ' <b>Webhook caught pipeline event!</b>',
'parse_mode' => 'html'
];
sendRequest('sendMessage', $post);
}
}
}
}
Этапы в том порядке, который мне нужен:
То, что выводится мне: