fix(ci): verify legacy FTP retry payloads
deploy-preland / deploy barbariskatest (push) Failing after 44s
deploy-preland / deploy zoomstage.online (push) Skipped
deploy-preland / deploy zoompixel.online (push) Successful in 31s
deploy-preland / deploy zoompixel.ru (push) Successful in 28s

This commit is contained in:
Panfilov Konstantin committed 2026-10-18 00:40:02 +03:00
1 parent d646f98aa7
commit 97fe9646b7
1 file changed
+13 -4
+13 -4
View File
@@ -91,8 +91,8 @@ jobs:
dir=$(printf '%s' "$REMOTE_DIR" | sed 's#^/*##; s#/*$##')
case "$dir" in *[!A-Za-z0-9._/-]*) echo "недопустимый dir: $dir"; exit 1 ;; esac
umask 077
netrc=$(mktemp)
trap 'rm -f "$netrc"' EXIT
netrc=$(mktemp); verify=$(mktemp)
trap 'rm -f "$netrc" "$verify"' EXIT
printf 'machine %s login %s password %s\n' "$FTP_HOST" "$FTP_USER" "$FTP_PASS" > "$netrc"
git ls-files | grep -vE '^(\.gitea/|README\.md$|AGENTS\.md$|CLAUDE\.md$|\.gitignore$|requisites\.html$|config\.json$)' > files.txt
# имя уходит в адрес ftp:// как есть — пробелы и прочее экранирование не поддерживаем
@@ -102,8 +102,17 @@ jobs:
# конкретный путь, а повторная отправка безопасна.
while read -r f; do
echo "загрузка: $f"
curl -sS --ssl-reqd --netrc-file "$netrc" --ftp-create-dirs --retry 3 --fail \
-T "$f" "ftp://$FTP_HOST/${dir:+$dir/}$f"
if curl -sS --ssl-reqd --netrc-file "$netrc" --ftp-create-dirs --retry 3 --fail \
-T "$f" "ftp://$FTP_HOST/${dir:+$dir/}$f"; then
continue
fi
# Этот FTP-сервер иногда возвращает 426 уже после успешной записи
# бинарного файла. Не считаем передачу успешной вслепую: скачиваем
# объект обратно и сверяем байты с исходным файлом.
curl -sS --ssl-reqd --netrc-file "$netrc" --fail --retry 3 \
"ftp://$FTP_HOST/${dir:+$dir/}$f" -o "$verify"
cmp -s "$f" "$verify" || { echo "файл не совпал после FTP-ошибки: $f"; exit 1; }
echo "FTP 426 подтверждён сверкой: $f"
done < files.txt
echo "залито файлов: $(wc -l < files.txt)"