Files
outiline-mcp/openspec/changes/create-outline-mcp-server/specs/release-pipeline/spec.md
T

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.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