FIX PUSH REPO 2
This commit is contained in:
+21
-17
@@ -9,12 +9,11 @@ if [[ -z "${NEXSPENCE_URL:-}" || -z "${NEXSPENCE_TOKEN:-}" || -z "${NEXSPENCE_RE
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Имя базы данных репозитория (исправляем расширение на стандартное .db.tar.gz для repo-add)
|
# Имя базы данных репозитория (используем стандартное .db.tar.gz для repo-add)
|
||||||
DB_NAME="${NEXSPENCE_REPOSITORY}.db.tar.gz"
|
DB_NAME="${NEXSPENCE_REPOSITORY}.db.tar.gz"
|
||||||
FILES_NAME="${NEXSPENCE_REPOSITORY}.files.tar.gz"
|
FILES_NAME="${NEXSPENCE_REPOSITORY}.files.tar.gz"
|
||||||
|
|
||||||
echo "====== Подготовка рабочего пространства ======"
|
echo "====== Подготовка рабочего пространства ======"
|
||||||
# Ищем собранный пакет в текущей папке или подпапках
|
|
||||||
PKG_FILE=$(find . -maxdepth 2 -name "*.pkg.tar.zst" | head -n 1)
|
PKG_FILE=$(find . -maxdepth 2 -name "*.pkg.tar.zst" | head -n 1)
|
||||||
if [[ -z "$PKG_FILE" ]]; then
|
if [[ -z "$PKG_FILE" ]]; then
|
||||||
echo "❌ Ошибка: Скомпилированный пакет .pkg.tar.zst не найден!"
|
echo "❌ Ошибка: Скомпилированный пакет .pkg.tar.zst не найден!"
|
||||||
@@ -22,7 +21,6 @@ if [[ -z "$PKG_FILE" ]]; then
|
|||||||
fi
|
fi
|
||||||
echo "Найден новый пакет: $PKG_FILE"
|
echo "Найден новый пакет: $PKG_FILE"
|
||||||
|
|
||||||
# Создаем изолированную директорию для синхронизации базы данных
|
|
||||||
BUILD_DIR=$(mktemp -d)
|
BUILD_DIR=$(mktemp -d)
|
||||||
trap 'rm -rf "$BUILD_DIR"' EXIT
|
trap 'rm -rf "$BUILD_DIR"' EXIT
|
||||||
|
|
||||||
@@ -30,27 +28,34 @@ cp "$PKG_FILE" "$BUILD_DIR/"
|
|||||||
cd "$BUILD_DIR"
|
cd "$BUILD_DIR"
|
||||||
|
|
||||||
echo "====== Загрузка существующей базы данных ======"
|
echo "====== Загрузка существующей базы данных ======"
|
||||||
# Пытаемся скачать текущую базу данных с Nexspence, чтобы сохранить историю прошлых версий
|
# Скачиваем с флагом --fail, чтобы curl не сохранял HTML-страницы ошибок при 404/500
|
||||||
# Если репозиторий пустой (первый запуск), curl может вернуть 404, это нормально
|
if curl --fail --silent --show-error --location \
|
||||||
curl --fail --silent --show-error --location \
|
|
||||||
-H "Authorization: Bearer ${NEXSPENCE_TOKEN}" \
|
-H "Authorization: Bearer ${NEXSPENCE_TOKEN}" \
|
||||||
"${NEXSPENCE_URL}/repository/${NEXSPENCE_REPOSITORY}/${DB_NAME}" -o "$DB_NAME" || echo "База данных не найдена на сервере, будет создана новая."
|
"${NEXSPENCE_URL}/repository/${NEXSPENCE_REPOSITORY}/${DB_NAME}" -o "$DB_NAME" 2>/dev/null; then
|
||||||
|
|
||||||
if [[ -f "$DB_NAME" ]]; then
|
# Проверяем, является ли скачанный файл настоящим архивом
|
||||||
echo "Успешно загружена существующая база данных. Прошлые версии будут сохранены в индексе."
|
if bsdtar -tf "$DB_NAME" &>/dev/null; then
|
||||||
# Скачиваем также сопутствующий .files файл для консистентности индексов
|
echo "Успешно загружена существующая база данных. Прошлые версии будут сохранены в индексе."
|
||||||
curl --fail --silent --location \
|
|
||||||
-H "Authorization: Bearer ${NEXSPENCE_TOKEN}" \
|
# Скачиваем сопутствующий .files файл
|
||||||
"${NEXSPENCE_URL}/repository/${NEXSPENCE_REPOSITORY}/${FILES_NAME}" -o "$FILES_NAME" || true
|
curl --fail --silent --location \
|
||||||
|
-H "Authorization: Bearer ${NEXSPENCE_TOKEN}" \
|
||||||
|
"${NEXSPENCE_URL}/repository/${NEXSPENCE_REPOSITORY}/${FILES_NAME}" -o "$FILES_NAME" 2>/dev/null || true
|
||||||
|
else
|
||||||
|
echo "⚠️ Скачанный файл базы данных поврежден или содержит текст ошибки. Создаем новую базу."
|
||||||
|
rm -f "$DB_NAME"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "База данных не найдена на сервере (404) или недоступна. Будет создана новая."
|
||||||
|
rm -f "$DB_NAME"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "====== Обновление базы данных через repo-add ======"
|
echo "====== Обновление базы данных через repo-add ======"
|
||||||
# Добавляем новый пакет в базу данных.
|
# Добавляем новый пакет в базу данных.
|
||||||
# Флаг -n (new-only) гарантирует, что старые версии этого же пакета НЕ будут вычищаться из индексов базы данных.
|
# Флаг -n (new-only) гарантирует, что старые версии НЕ будут вычищаться из индексов базы данных.
|
||||||
repo-add -n "$DB_NAME" *.pkg.tar.zst
|
repo-add -n "$DB_NAME" *.pkg.tar.zst
|
||||||
|
|
||||||
echo "====== Публикация файлов на Nexspence ======"
|
echo "====== Публикация файлов на Nexspence ======"
|
||||||
# Отправляем новый пакет (файлы старых версий лежат на Nexspence под своими уникальными версиями, они не затрутся)
|
|
||||||
NEW_PKG_NAME=$(basename *.pkg.tar.zst)
|
NEW_PKG_NAME=$(basename *.pkg.tar.zst)
|
||||||
echo "Загрузка пакета: $NEW_PKG_NAME..."
|
echo "Загрузка пакета: $NEW_PKG_NAME..."
|
||||||
curl --fail --silent --show-error -X PUT \
|
curl --fail --silent --show-error -X PUT \
|
||||||
@@ -58,7 +63,6 @@ curl --fail --silent --show-error -X PUT \
|
|||||||
--data-binary @"$NEW_PKG_NAME" \
|
--data-binary @"$NEW_PKG_NAME" \
|
||||||
"${NEXSPENCE_URL}/repository/${NEXSPENCE_REPOSITORY}/$NEW_PKG_NAME"
|
"${NEXSPENCE_URL}/repository/${NEXSPENCE_REPOSITORY}/$NEW_PKG_NAME"
|
||||||
|
|
||||||
# Отправляем обновленные файлы базы данных (они перезапишут старые индексы, но теперь внутри содержатся данные всех версий)
|
|
||||||
echo "Загрузка обновленной базы данных: $DB_NAME..."
|
echo "Загрузка обновленной базы данных: $DB_NAME..."
|
||||||
curl --fail --silent --show-error -X PUT \
|
curl --fail --silent --show-error -X PUT \
|
||||||
-H "Authorization: Bearer ${NEXSPENCE_TOKEN}" \
|
-H "Authorization: Bearer ${NEXSPENCE_TOKEN}" \
|
||||||
@@ -73,7 +77,7 @@ if [[ -f "$FILES_NAME" ]]; then
|
|||||||
"${NEXSPENCE_URL}/repository/${NEXSPENCE_REPOSITORY}/$FILES_NAME"
|
"${NEXSPENCE_URL}/repository/${NEXSPENCE_REPOSITORY}/$FILES_NAME"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Создаем символические ссылки .db и .files без расширения архива, которые pacman запрашивает по умолчанию
|
# Создаем символические ссылки .db и .files для pacman без расширения архива
|
||||||
ln -sf "$DB_NAME" "${NEXSPENCE_REPOSITORY}.db"
|
ln -sf "$DB_NAME" "${NEXSPENCE_REPOSITORY}.db"
|
||||||
ln -sf "$FILES_NAME" "${NEXSPENCE_REPOSITORY}.files"
|
ln -sf "$FILES_NAME" "${NEXSPENCE_REPOSITORY}.files"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user