# Spec: release-pipeline ## ADDED Requirements ### Requirement: Disparo por tags de versión El pipeline de release SHALL ejecutarse cuando se realice push de tags cuyo nombre comience con `v` (por ejemplo `v1.0.0`). #### Scenario: Push de tag de release - **WHEN** se pushea al repositorio un tag que empieza con `v` - **THEN** el workflow de Gitea Actions se dispara automáticamente #### Scenario: Push sin tag de release - **WHEN** se pushea una rama sin tags o un tag que no empieza con `v` - **THEN** el workflow de release no se ejecuta ### Requirement: Entorno de compilación El pipeline SHALL utilizar una imagen de Ubuntu y SHALL configurar Go 1.26 como versión del toolchain antes de compilar. #### Scenario: Job de build - **WHEN** el pipeline se ejecuta - **THEN** el entorno de build dispone de Go 1.26 instalado sobre una imagen Ubuntu ### Requirement: Inyección de variables en la compilación El pipeline SHALL inyectar en tiempo de compilación las variables `Version`, `GiteaURL`, `RepoOwner` y `RepoName` mediante `-ldflags`, derivadas del tag y del repositorio. #### Scenario: Compilación con metadatos - **WHEN** el pipeline compila los binarios - **THEN** los binarios resultantes contienen la versión del tag y los datos del repositorio Gitea para el mecanismo de auto-update ### Requirement: Compilación multi-plataforma estática El pipeline SHALL compilar binarios estáticos (`CGO_ENABLED=0`) para las plataformas linux/amd64, darwin/arm64 y windows/amd64. #### Scenario: Artefactos generados - **WHEN** el job de build completa la compilación - **THEN** se generan tres binarios estáticos: uno para linux amd64, uno para darwin arm64 (Apple Silicon) y uno para windows amd64 ### Requirement: Publicación del release en Gitea El pipeline SHALL publicar un release en Gitea asociado al tag, adjuntando los binarios compilados como assets, utilizando la acción oficial de Gitea o un CLI compatible. #### Scenario: Release publicado - **WHEN** la compilación multi-plataforma finaliza con éxito - **THEN** se crea (o actualiza) el release del tag en Gitea con los tres binarios adjuntos