43 lines
2.1 KiB
Markdown
43 lines
2.1 KiB
Markdown
# 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
|