configuracion de entorno de desarrollo
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
# Spec: self-update
|
||||
|
||||
## ADDED Requirements
|
||||
|
||||
### Requirement: Consulta de la última release de Gitea
|
||||
El sistema SHALL consultar el endpoint `/api/v1/repos/{owner}/{repo}/releases/latest` de la instancia de Gitea configurada para obtener la última release disponible.
|
||||
|
||||
#### Scenario: Consulta exitosa de última release
|
||||
- **WHEN** se ejecuta la lógica de auto-actualización y la API de Gitea responde correctamente
|
||||
- **THEN** el sistema obtiene el tag de la release y la lista de assets publicados
|
||||
|
||||
#### Scenario: Gitea no accesible
|
||||
- **WHEN** la instancia de Gitea no es accesible o responde con error
|
||||
- **THEN** el sistema finaliza con un mensaje de error sin modificar el binario actual
|
||||
|
||||
### Requirement: Comparación de versiones
|
||||
El sistema SHALL comparar la versión actual del binario (`Version` inyectada vía ldflags) con el tag de la última release de Gitea, y MUST omitir la actualización si la versión actual es igual o superior.
|
||||
|
||||
#### Scenario: Versión actualizada disponible
|
||||
- **WHEN** el tag de Gitea indica una versión superior a la versión actual
|
||||
- **THEN** el sistema procede a descargar el asset correspondiente
|
||||
|
||||
#### Scenario: Versión ya actualizada
|
||||
- **WHEN** la versión actual es igual o superior al tag de la última release
|
||||
- **THEN** el sistema informa que no hay actualizaciones y no realiza cambios en el binario
|
||||
|
||||
### Requirement: Descarga del asset compatible
|
||||
El sistema SHALL seleccionar el asset de la release cuyo nombre corresponda al sistema operativo y arquitectura actuales (`runtime.GOOS`, `runtime.GOARCH`), y MUST descargarlo antes de aplicar la actualización.
|
||||
|
||||
#### Scenario: Asset compatible disponible
|
||||
- **WHEN** la release contiene un asset que coincide con el `GOOS`/`GOARCH` actuales
|
||||
- **THEN** el sistema descarga dicho asset para aplicar la actualización
|
||||
|
||||
#### Scenario: Asset compatible no disponible
|
||||
- **WHEN** la release no contiene un asset para la plataforma actual
|
||||
- **THEN** el sistema finaliza con un error indicando que no existe binario para la plataforma
|
||||
|
||||
### Requirement: Aplicación del binario descargado
|
||||
El sistema SHALL aplicar el binario descargado utilizando `selfupdate.Apply` (github.com/minio/selfupdate), reemplazando el binario en ejecución.
|
||||
|
||||
#### Scenario: Actualización aplicada correctamente
|
||||
- **WHEN** el asset descargado es un binario válido
|
||||
- **THEN** el sistema reemplaza el binario actual mediante `selfupdate.Apply` e informa el éxito de la operación
|
||||
|
||||
#### Scenario: Asset corrupto o inválido
|
||||
- **WHEN** el asset descargado no es un binario válido
|
||||
- **THEN** el sistema aborta la actualización e informa el error sin dejar el binario en estado inconsistente
|
||||
Reference in New Issue
Block a user