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

@@ -1,5 +1,52 @@
# Changelog
## [1.1.0] - 2026-07-29
### Distribución e instalación automatizada vía Gitea + PANEL
#### Publicación de versiones
- Artefactos con versión en el nombre: `CloudRestoreAS-<version>-{linux,win}-<arch>.{tar.gz,zip}`,
más `SHA256SUMS` y `release.json` (manifiesto con sha256, tamaño y deps embebidas).
- `packaging/scripts/publish-release.sh`: publica en los paquetes genéricos de Gitea
(`ADUANASOFT/generic/cloudrestoreas/<version>`) y **verifica el sha256 contra la propia
API de Gitea** antes de dar la publicación por buena. Soporta `--dry-run`, `--force` y
`--notify-panel`.
- `build-all.sh --publish` encadena build → empaquetado → publicación. Se niega a publicar
si falta una plataforma: los paquetes genéricos son inmutables y corregirlo quemaría el
número de versión.
#### Contrato con el PANEL
- `POST /api/restore/instance-config` ahora reporta también `platform` y `arch`, para que
el PANEL sepa qué artefacto le corresponde a cada servidor.
- `processed_folder` ya se envía en ese mismo reporte (antes se calculaba, no se mandaba).
#### Instaladores
- **Nuevo `install.ps1`**: instalador de despliegue Windows, autocontenido. Registra una
tarea programada ONSTART como SYSTEM para el 24/7 headless — sin NSSM ni descargas en el
servidor destino. Detiene la instancia en ejecución antes de reemplazar el `.exe`.
- El antiguo `install.ps1` (preparación del entorno de desarrollo: Python, venv, pip) se
movió a `scripts/dev-setup.ps1`. **Se estaba empaquetando por error** en el zip del
ejecutable autocontenido, que no necesita nada de eso.
- `install.sh` e `install.ps1` aceptan `--panel-env-file` / `-PanelEnvFile`: fusionan las
claves `CLOUDRESTORE_PANEL_*` en `config/.env` (replace-or-append, idempotente, con lista
blanca) y borran el archivo. El token viaja por archivo 0600, nunca por argumentos, para
que no quede visible en `ps` ni en el historial del destino.
- `install.sh` detiene el servicio antes de reemplazar el binario (un ELF en ejecución da
`ETXTBSY`) y lo vuelve a levantar si estaba activo.
#### Versionado
- `app/__init__.py` es la fuente única de la versión; el diálogo *Acerca de* ya no la trae
hardcodeada.
- Flag `--version` en el binario, y sello `config/.version` que escribe el bootstrap (el
instalador remoto lo lee por SFTP, porque el `.exe` se compila con `console=False`).
- El `.exe` ya lleva metadatos de versión de Windows (`VSVersionInfo`).
#### Correcciones
- `config/7zip` y `config/odbc` se re-despliegan cuando el build trae otras versiones
embebidas, comparando un sello con el sha256 de `bundled-versions.json`. Antes solo se
copiaban si la carpeta estaba vacía, así que una actualización con driver ODBC nuevo
conservaba el viejo indefinidamente.
## [1.0.0] - 2026-01-25
### Lanzamiento Inicial