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

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