2.1 KiB
2.1 KiB
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.22 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.22 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