Паспорт источника
Паспорт связывает GitLab instance/release, проект, job ID, pipeline, commit и runner при наличии. Метаданные job и trace — разные источники. Для чтения используйте разрешённый API-клиент с правами доступа к проекту. Успешное чтение описания job не гарантирует доступность её полного журнала или артефактов.
Сбор и доступ
Прочитайте конкретную job по project/job ID и отдельно trace. Сохраните ответ, статус чтения и время получения. Не запускайте retry/run/cancel для восстановления журнала: это изменит рабочий процесс. Если исследуется повторное выполнение, различайте собственные ID запусков и их связь с pipeline, а не объединяйте все одинаковые имена job в одну операцию.
Форма и пример
В примере job 88 относится к pipeline 16 и вымышленному commit. user — контекст пользователя в метаданных; runner — исполнитель, когда известен. status=success относится к состоянию job, не автоматически к бизнес-результату deploy. Команды и строки trace нужно читать отдельно. Отсутствующее поле runner не заменяйте последним runner, видимым в другом задании.
Хранение и сопоставление
В паспорте укажите срок доступности trace, права, наличие стирания/удаления и место сохранённой копии. Отделите trace от artifacts и логов целевой системы: у них разные правила хранения. Для сопоставления используйте instance/project/job, pipeline ID, SHA и время. Даже одинаковый SHA может обрабатываться несколькими запусками с разными переменными и условиями.
Проверка наблюдаемости
Проверьте, что trace относится именно к выбранной job и её текущему состоянию, затем свяжите этапы с конфигурацией CI и источниками deployment. Если тест приложения требуется для вывода, найдите его результат, а не только итоговый статус shell. Сверьте результат тестов с конкретной job и версией приложения.
Ограничения и отсутствие данных
Ответ 404 для trace может означать отсутствие job или журнала; это не доказательство, что задание никогда не существовало. Проверьте проект, ID, права, стирание и доступность истории. Сохраните различие между ошибкой доступа, пустым журналом и успешно полученной копией. Текущее состояние pipeline не восстановит удалённый trace, поэтому исторические пробелы указывайте явно.