🔒 Repository is read-only – file editing is disabled.

PaganLinux/pagan-web-v2/run-weekly.sh main

70 linii Raw ← Powrót
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
#!/bin/bash
# =============================================================================
# run-weekly.sh – tygodniowa heurystyka + budowa najnowszych pakietów
# 1) pagsync --check-updates --apply  → znajduje nowsze wersje upstream i
#    podbija pkgver w recepturach (heurystyka: update-skrypt / git / httpdir /
#    automatyczna ze źródeł)
# 2) commit zmian receptur do recipes.git (best-effort)
# 3) pagsync --fix-sha               → uzupełnia realne sumy SHA256 (SKIP→suma)
# 4) buduje DOKŁADNIE pakiety, których wersja została podbita (lista z --apply)
#
# Zabezpieczenia:
#   • globalny lock w pagsync (exit 3) – jeśli buduje panel/timer, kończymy
#     od razu, bez masowych porażek
#   • każdy build w pojedynczym wywołaniu pagsync – rootfs zajęty = przerwij
# =============================================================================
set -uo pipefail

export PAGAN_RECIPES=/var/lib/pagan-sync/recipes
export PAGAN_ROOTFS=/var/lib/pagan-build/rootfs
export PAGAN_REPO=/var/www/repo.paganlinux.eu
export PAGAN_PAGBUILD=/opt/pagan-web-v2/pagbuild
export PAGAN_BUILD_OUT=/var/cache/pagbuild/output
export PAGAN_GPG_KEY=A14CBE52BE0D63F5
export PAGAN_DO_SIGN=1
export PYTHONUNBUFFERED=1

PS=/opt/pagan-web-v2/pagsync
LOG=/var/log/pagan-weekly.log
UPDATED=/var/lib/pagan-build/updated-packages.list
RECIPES=/var/lib/pagan-sync/recipes

echo "===== WEEKLY START $(date '+%Y-%m-%d %H:%M:%S') =====" >> "$LOG"

# ── 1) Heurystyka: nowe wersje upstream + podbicie pkgver ──
"$PS" --once --check-updates --apply >> "$LOG" 2>&1
rc=$?
if [[ $rc -eq 3 ]]; then
    echo "⏭ Inna instancja pagsync już działa – tygodniowy przebieg pominięty" >> "$LOG"
    exit 0
fi

# ── 2) Commit zmian receptur (heurystyka) – best-effort ──
# git add -u (nie -A!): tylko modyfikacje/usunięcia śledzonych plików – -A z
# nieaktualnego drzewa przywracałoby usunięte pliki (np. easytag/id3lib).
# commit -> pull --rebase -> push – wspólna dyscyplina zapisu jak w panelu/auto-fix.
( cd "$RECIPES" && git add -u && \
  git -c user.name="PaganOS Builder" -c user.email="repo@paganlinux.eu" \
      commit -m "weekly: check-updates (podbicie wersji upstream)" && \
  git pull --rebase origin main && \
  git push origin HEAD ) >> "$LOG" 2>&1 || \
  echo "⚠ weekly: commit/push NIEUDANY (rebase/konflikt?) – sprawdź ręcznie: $RECIPES" >> "$LOG"

# ── 3) Uzupełnij realne sumy SHA256 (po --apply są SKIP; auto_fix commituje sam) ──
"$PS" --once --fix-sha >> "$LOG" 2>&1 || true

# ── 4) Zbuduj najnowsze wersje (tylko te podbite przez heurystykę) ──
if [[ -s "$UPDATED" ]]; then
    echo "Budowanie zaktualizowanych pakietów:" >> "$LOG"
    while IFS= read -r pkg; do
        [[ -z "$pkg" ]] && continue
        echo "  → $pkg" >> "$LOG"
        "$PS" --once --build "$pkg" >> "$LOG" 2>&1 || true
    done < "$UPDATED"
    : > "$UPDATED"
else
    echo "ℹ Brak zaktualizowanych pakietów – wszystko aktualne" >> "$LOG"
fi

echo "===== WEEKLY DONE $(date '+%Y-%m-%d %H:%M:%S') =====" >> "$LOG"
exit 0