feat: add debian packaging, CI/CD and update script
- Add debian/ packaging for .deb generation - Add .forgejo/workflows/build.yml for CI/CD (runner label: docker) - Add scripts/fullupdater and scripts/fullupdater-update - Remove obsolete install.sh - Update .gitignore for debian build artifacts
This commit is contained in:
parent
184b0e6033
commit
57e6b2557b
10 changed files with 281 additions and 30 deletions
71
scripts/fullupdater-update
Normal file
71
scripts/fullupdater-update
Normal file
|
|
@ -0,0 +1,71 @@
|
|||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
REPO_URL="https://git.geronzi.fr"
|
||||
OWNER="geronzi"
|
||||
REPO="full_updater"
|
||||
TOKEN_FILE="/etc/full-updater/token"
|
||||
CONFIG_FILE="/etc/full-updater/config.ini"
|
||||
INSTALLED_VERSION=$(dpkg -s full-updater 2>/dev/null | grep "^Version:" | awk '{print $2}' || echo "0.0.0")
|
||||
|
||||
echo "=== Full Updater Update ==="
|
||||
echo "Version installée : ${INSTALLED_VERSION}"
|
||||
|
||||
# Build API headers
|
||||
HEADERS=(-H "Content-Type: application/json")
|
||||
if [ -f "$TOKEN_FILE" ]; then
|
||||
TOKEN=$(cat "$TOKEN_FILE" | tr -d '[:space:]')
|
||||
HEADERS+=("-H" "Authorization: token ${TOKEN}")
|
||||
fi
|
||||
|
||||
# Fetch latest release
|
||||
API_URL="${REPO_URL}/api/v1/repos/${OWNER}/${REPO}/releases/latest"
|
||||
echo "Recherche de la dernière release..."
|
||||
|
||||
RESPONSE=$(curl -s -L "${HEADERS[@]}" "$API_URL")
|
||||
if [ -z "$RESPONSE" ] || echo "$RESPONSE" | grep -q "Not Found"; then
|
||||
echo "Erreur : impossible de récupérer la dernière release."
|
||||
echo "Vérifiez l'URL : $API_URL"
|
||||
echo "Pour un repo privé, créez /etc/full-updater/token avec un token d'accès Forgejo."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
LATEST_TAG=$(echo "$RESPONSE" | python3 -c "import sys,json; d=json.load(sys.stdin); print(d.get('tag_name',''))")
|
||||
if [ -z "$LATEST_TAG" ]; then
|
||||
echo "Erreur : aucune release trouvée."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
LATEST_VERSION=${LATEST_TAG#v}
|
||||
echo "Dernière version : ${LATEST_VERSION}"
|
||||
|
||||
if [ "$INSTALLED_VERSION" = "$LATEST_VERSION" ]; then
|
||||
echo "✅ Full Updater est déjà à jour (${INSTALLED_VERSION})."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Find .deb asset
|
||||
ASSET_URL=$(echo "$RESPONSE" | python3 -c "
|
||||
import sys, json
|
||||
d = json.load(sys.stdin)
|
||||
for a in d.get('assets', []):
|
||||
if a['name'].endswith('.deb'):
|
||||
print(a['browser_download_url'])
|
||||
break
|
||||
")
|
||||
|
||||
if [ -z "$ASSET_URL" ]; then
|
||||
echo "Erreur : aucun fichier .deb trouvé dans la release ${LATEST_TAG}."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
TMP_DEB="/tmp/full-updater-${LATEST_VERSION}.deb"
|
||||
echo "Téléchargement de ${ASSET_URL}..."
|
||||
curl -s -L -o "$TMP_DEB" "${HEADERS[@]}" "$ASSET_URL"
|
||||
|
||||
echo "Installation..."
|
||||
dpkg -i "$TMP_DEB"
|
||||
apt-get install -f -y
|
||||
rm -f "$TMP_DEB"
|
||||
|
||||
echo "✅ Mise à jour terminée : ${INSTALLED_VERSION} → ${LATEST_VERSION}"
|
||||
Loading…
Add table
Add a link
Reference in a new issue