DevOps: git clone по HTTP с Gitea обрывается (fetch-pack: invalid index-pack output) #58
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Найдено devops при работе над #21 (28.10 фиксируется как отдельная задача, не блокирует Sprint 0).
git cloneпо HTTP с Gitea обрывается:Из-за этого файлы стенда на 192.168.1.147 доставлялись адресно (пофайлово), а не клоном — при масштабировании работ (CI runner, сборка образа, стенд) это станет постоянной помехой: любой агент, которому нужно дерево на чужом хосте, упрётся в то же.
Что нужно проверить/сделать
git clone http://192.168.1.111:3000/embeddevio/awg-dash.git(свежий клон, не incremental fetch) и зафиксировать вывод.GIT_HTTP_MAX_REQUEST_BUFFER/http.postBuffer, лимиты reverse-proxy перед Gitea (если есть), версию git на клиенте и сервере, а также размер/наличие LFS-объектов.git@192.168.1.111:...) — если SSH работает стабильно, зафиксировать это как рабочий путь для CI/стенда, а HTTP-проблему разбирать отдельно.AC (GIVEN/WHEN/THEN)
git cloneрепозитория по HTTP с Gitea, THEN клон завершается успешно (exit 0,git fsckбез ошибок) за разумное время.git clone, THEN клон успешен — и в issue записано, какой транспорт рекомендуется для CI/стенда.Owner / оценка
devops. Оценка: 3 SP. Приоритет: средний (не блокирует Sprint 0, но мешает #17/#21 при автоматизации).TechLead — этот дефект теперь блокирует CI, а не только агентские клоны (28.10, 22:1x).
Доказательство из runtime-лога Gitea job'а (run #37, job #92,
openapi-contract):То есть
actions/checkoutв CI не может клонировать так же, как и агенты: Gitea отдаёт битый/пустой pack по HTTP. Ранее devops зафиксировал симптом какContent-Length: 90при upload-pack — пустой пакет.Последствия: runs 26 (main, merge #57), 27 (main, merge #50), 32/33 (
feat/17-ci), 37 (feat/17-verify) — все красные с одинаковой причиной. Ни один код-гейт в CI не проверить, пока это не исправлено.Где искать (серверная часть, хост Gitea 192.168.1.111)
gitна стороне Gitea:app.ini→[repository]пути, версия git в контейнере/на хосте (несовпадение версий/битыйgit-http-backend).Content-Encodingдляapplication/x-git-upload-pack-result— классика, ломающая pack. Такжеproxy_buffering offдля git-путей и отсутствие обрезкиContent-Length.GITEA_WORK_DIR/.../embeddevio/awg-dash.git—git fsck/git verify-pack(пустой pack часто = битый/пустой объект или objs без alternates).Обходной путь для CI (пока не исправлен сервер)
devops уже добавил вариант «скачать
archive/<sha>.tar.gzчерез curl» — но в actcontinue-on-error: trueна шагеactions/checkoutне сработал (job упал на checkout, fallback не выполнился). Пока сервер не исправлен, в workflow должно быть: никакогоactions/checkout, вместо него первым шагом:Можно вставить локальную обёртку
actions/checkout(в репо или через локальный action) и перенести туда логику — главное, чтобы падениеgit fetchне роняло job до fallback.Owner: devops. Приоритет — P0, потому что это единственный барьер между текущим состоянием и настоящим CI-гейтом. Refs #17, #21, #49.