From 251be1d77b9967db22dd7a51f6c0b5f0b5a753a4 Mon Sep 17 00:00:00 2001 From: jze9 Date: Mon, 24 Aug 2026 17:07:46 +0500 Subject: [PATCH] =?UTF-8?q?fix(ci):=20=D0=BD=D0=B5=20=D0=B2=D0=B0=D0=BB?= =?UTF-8?q?=D0=B8=D1=82=D1=8C=20=D0=B4=D0=B6=D0=BE=D0=B1=D1=83=20=D0=BD?= =?UTF-8?q?=D0=B0=20=D0=BD=D0=B5=D1=83=D0=B4=D0=B0=D1=87=D0=BD=D0=BE=D0=B9?= =?UTF-8?q?=20=D1=83=D0=B1=D0=BE=D1=80=D0=BA=D0=B5=20=D0=B2=D1=80=D0=B5?= =?UTF-8?q?=D0=BC=D0=B5=D0=BD=D0=BD=D0=BE=D0=B3=D0=BE=20=D1=87=D0=B5=D0=BA?= =?UTF-8?q?=D0=B0=D1=83=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Найден реальный root cause, почему ни один деплой не проходил с 11 августа: джоба test честно проходила линт (ruff+mypy) и все 112 тестов ("All checks passed!", "Все юнит-тесты прошли"), но затем падала на шаге уборки — rm -rf временной директории не мог удалить mypy/pytest-кэш, созданный ВНУТРИ Docker- контейнеров от root (docker run без --user). Обычный пользователь раннера не может удалить root-owned файлы → rm возвращает ненулевой код → джоба падает → deploy пропускается (needs: test) — при том что код был полностью исправен. Починено: rm -rf ... || true в обоих шагах уборки (test и deploy). Чистка временной папки — best-effort, не критерий готовности кода. Co-Authored-By: Claude Opus 4.8 --- .gitea/workflows/deploy.yml | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index 5a40a20..f8b6dc7 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -38,7 +38,10 @@ jobs: - name: Убрать временный чекаут if: always() - run: rm -rf "${SRC:-/tmp/none}" + # Часть файлов (mypy/pytest кэш) создана внутри Docker-контейнеров от + # root — обычный пользователь раннера не может их удалить. Это не + # повод валить джобу: код уже проверен, чистка — best-effort. + run: rm -rf "${SRC:-/tmp/none}" || true deploy: needs: test # деплой только если юнит-тесты прошли @@ -62,4 +65,7 @@ jobs: - name: Убрать временный чекаут if: always() - run: rm -rf "${SRC:-/tmp/none}" + # Часть файлов (mypy/pytest кэш) создана внутри Docker-контейнеров от + # root — обычный пользователь раннера не может их удалить. Это не + # повод валить джобу: код уже проверен, чистка — best-effort. + run: rm -rf "${SRC:-/tmp/none}" || true