feature/generador-instaladores-linux-windows

This commit is contained in:
2026-07-30 07:34:17 -06:00
parent cafe3f1b87
commit c3f1d70e23
34 changed files with 3498 additions and 252 deletions

View File

@@ -4,7 +4,9 @@
#
# Linux : build en Docker (ubuntu:22.04) -> dist/CloudRestoreAS (autocontenido)
# Windows: build vía powershell.exe -> build.ps1 -> dist/CloudRestoreAS.exe
# Paquete: dist/release/CloudRestoreAS-linux.tar.gz y CloudRestoreAS-win.zip
# Paquete: dist/release/CloudRestoreAS-<version>-{linux,win}-<arch>.{tar.gz,zip}
# + SHA256SUMS + release.json
# Publica: paquetes genéricos de Gitea (fuente de verdad que consume el PANEL)
#
# Uso:
# ./build-all.sh # ambos + empaquetado
@@ -12,6 +14,9 @@
# ./build-all.sh --windows-only # solo Windows
# ./build-all.sh --no-package # sin generar .tar.gz/.zip
# ./build-all.sh --clean # rebuild desde cero (borra venvs/bundled/dist)
# ./build-all.sh --publish # además publica en Gitea (requiere GITEA_TOKEN)
# ./build-all.sh --publish --notify-panel # y avisa al PANEL para que sincronice
# ./build-all.sh --publish --force-publish # reemplaza una versión ya publicada
# =============================================================================
set -uo pipefail
@@ -22,6 +27,8 @@ DO_LINUX=1
DO_WINDOWS=1
DO_PACKAGE=1
DO_CLEAN=0
DO_PUBLISH=0
PUBLISH_ARGS=()
for arg in "$@"; do
case "$arg" in
@@ -29,6 +36,9 @@ for arg in "$@"; do
--windows-only) DO_LINUX=0 ;;
--no-package) DO_PACKAGE=0 ;;
--clean) DO_CLEAN=1 ;;
--publish) DO_PUBLISH=1 ;;
--notify-panel) PUBLISH_ARGS+=(--notify-panel) ;;
--force-publish) PUBLISH_ARGS+=(--force) ;;
-h|--help)
grep '^#' "$0" | grep -v '^#!' | sed 's/^# \{0,1\}//'; exit 0 ;;
*) echo "Opción desconocida: $arg" >&2; exit 2 ;;
@@ -128,4 +138,33 @@ fi
FAIL=0
[[ "$DO_LINUX" -eq 1 && "$LIN_OK" -ne 1 ]] && FAIL=1
[[ "$DO_WINDOWS" -eq 1 && "$WIN_OK" -ne 1 ]] && FAIL=1
# --- Publicación a Gitea -----------------------------------------------------
# Solo con el build completo: publicar una versión a la que le falta una plataforma
# dejaría en el PANEL un release que no se le puede instalar a la mitad de los
# servidores. Los paquetes genéricos son inmutables, así que corregirlo obligaría a
# quemar el número de versión.
if [[ "$DO_PUBLISH" -eq 1 ]]; then
echo
if [[ "$FAIL" -eq 1 ]]; then
err "no se publica: el build no terminó bien"
elif [[ "$DO_PACKAGE" -eq 0 ]]; then
err "no se publica: --publish necesita el empaquetado (quita --no-package)"
FAIL=1
elif [[ "$DO_LINUX" -eq 0 || "$DO_WINDOWS" -eq 0 ]]; then
err "no se publica: se requieren ambas plataformas (quita --linux-only/--windows-only)"
FAIL=1
else
say "Publicando en Gitea"
stage_start
if bash "$ROOT/packaging/scripts/publish-release.sh" "${PUBLISH_ARGS[@]+"${PUBLISH_ARGS[@]}"}"; then
ok "publicado en Gitea"
else
err "falló la publicación en Gitea"
FAIL=1
fi
stage_end "Publicación"
fi
fi
exit $FAIL