ваше сообщение
This commit is contained in:
82
scripts/gitea-upload-release-assets.sh
Normal file
82
scripts/gitea-upload-release-assets.sh
Normal file
@@ -0,0 +1,82 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# Прикрепить файлы из папки downloads/ к релизу DLE в Gitea (через API).
|
||||
# Запускать на VDS после sync, когда downloads/ уже на сервере.
|
||||
#
|
||||
# На VDS:
|
||||
# cd /home/docker/dapp
|
||||
# export GITEA_PASSWORD='adminhb32026'
|
||||
# export GITEA_URL='https://hb3-accelerator.com/gitea'
|
||||
# ./scripts/gitea-upload-release-assets.sh [тег] [каталог]
|
||||
# ./scripts/gitea-upload-release-assets.sh v1.0.3 ./downloads
|
||||
#
|
||||
# Требования: curl. Без jq (парсим id из JSON вручную).
|
||||
|
||||
set -e
|
||||
|
||||
GITEA_URL="${GITEA_URL:-https://hb3-accelerator.com/gitea}"
|
||||
GITEA_USER="${GITEA_USER:-admin}"
|
||||
GITEA_PASSWORD="${GITEA_PASSWORD:?Задайте GITEA_PASSWORD.}"
|
||||
ORG="VC-HB3-Accelerator"
|
||||
REPO="DLE"
|
||||
TAG="${1:-v1.0.3}"
|
||||
DIR="${2:-./downloads}"
|
||||
API="${GITEA_URL}/api/v1"
|
||||
AUTH="-u ${GITEA_USER}:${GITEA_PASSWORD}"
|
||||
CURL_OPTS="-s --connect-timeout 15 --max-time 1200"
|
||||
RETRIES=2
|
||||
|
||||
if [ ! -d "$DIR" ] || [ -z "$(ls -A "$DIR" 2>/dev/null)" ]; then
|
||||
echo "Каталог $DIR пуст или не найден. Запускайте на VDS после sync."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Gitea: $GITEA_URL, репо: $ORG/$REPO, тег: $TAG, каталог: $DIR"
|
||||
echo "---"
|
||||
|
||||
# Получить или создать релиз по тегу
|
||||
json=$(curl $CURL_OPTS $AUTH "${API}/repos/${ORG}/${REPO}/releases/tags/${TAG}" 2>/dev/null) || true
|
||||
if [ -z "$json" ] || echo "$json" | grep -q '"message"'; then
|
||||
echo "Релиз $TAG не найден, создаём..."
|
||||
json=$(curl $CURL_OPTS -X POST $AUTH -H "Content-Type: application/json" \
|
||||
-d "{\"tag_name\":\"${TAG}\",\"name\":\"Release ${TAG}\",\"target\":\"${TAG}\"}" \
|
||||
"${API}/repos/${ORG}/${REPO}/releases" 2>/dev/null) || true
|
||||
fi
|
||||
release_id=$(echo "$json" | grep -o '"id":[0-9]*' | head -1 | grep -o '[0-9]*')
|
||||
if [ -z "$release_id" ]; then
|
||||
echo "Не удалось получить id релиза. Проверьте GITEA_PASSWORD и GITEA_URL."
|
||||
[ -n "$json" ] && echo "Ответ API: ${json:0:200}..."
|
||||
echo "Создайте релиз $TAG в Gitea вручную (Releases → Create), затем запустите скрипт снова."
|
||||
exit 1
|
||||
fi
|
||||
echo "Релиз $TAG (id=$release_id). Загрузка ассетов..."
|
||||
|
||||
for f in "$DIR"/*; do
|
||||
[ -f "$f" ] || continue
|
||||
name=$(basename "$f")
|
||||
echo " $name ..."
|
||||
code=""
|
||||
for try in $(seq 1 $((RETRIES+1))); do
|
||||
code=$(curl $CURL_OPTS -w "%{http_code}" -o /tmp/gitea_asset_$$.out -X POST $AUTH \
|
||||
"${API}/repos/${ORG}/${REPO}/releases/${release_id}/assets?name=${name}" \
|
||||
-F "attachment=@${f}")
|
||||
if [ "$code" = "201" ]; then
|
||||
echo " OK"
|
||||
break
|
||||
fi
|
||||
if [ "$code" = "409" ]; then
|
||||
echo " уже в релизе (409)"
|
||||
break
|
||||
fi
|
||||
if [ "$try" -le "$RETRIES" ] && echo "$code" | grep -qE '^5[0-9]{2}$'; then
|
||||
echo " HTTP $code, повтор $try/$RETRIES через 10 с..."
|
||||
sleep 10
|
||||
else
|
||||
echo " HTTP $code"
|
||||
break
|
||||
fi
|
||||
done
|
||||
rm -f /tmp/gitea_asset_$$.out
|
||||
done
|
||||
|
||||
echo "Готово. Проверьте: ${GITEA_URL}/${ORG}/${REPO}/releases"
|
||||
Reference in New Issue
Block a user