Skip to content

chore(release): publicar al subir la versión, sin tag a mano - #28

Merged
borjaperfra merged 1 commit into
mainfrom
ci/tag-al-subir-la-version
Sep 21, 2026
Merged

borjaperfra merged 1 commit into
mainfrom
ci/tag-al-subir-la-version

Conversation

@borjaperfra

Copy link
Copy Markdown
Contributor

Por qué

El release sólo salía si alguien se acordaba de empujar el tag, y el 17 de septiembre nadie se acordó: #26 dejó internal/tui.Version en 0.1.20 y cuatro días después /releases/latest seguía respondiendo v0.1.19. Como scripts/install.sh resuelve la versión contra ese endpoint, el instalador siguió sirviendo una versión sin los fixes ya mergeados — entre ellos el wire_api de #24, que es como nos enteramos.

v0.1.20 ya está publicado a mano. Esto es para que no vuelva a pasar.

Qué hace

El bump pasa a ser el acto de publicar:

  1. Un commit cambia Version en internal/tui/tui.go y se mergea a main.
  2. CI pasa en main.
  3. tag.yml lee la constante, y si ese tag no existe lo crea y llama al workflow de release.

Un merge que no toca la constante no etiqueta nada.

Dos decisiones que no son obvias

Espera a CI en vez de ir con el push. Lo que se publica son binarios firmados que alguien se baja con curl. Vet, los tests en ubuntu y macos, el escaneo de vulnerabilidades y la prueba del instalador son lo único que hay entre un merge malo y esa máquina. Branch protection ya los pide; esto se niega a publicar un commit que no los tenga.

Llama al workflow de release en vez de dejar que lo dispare el tag. Un tag empujado con el GITHUB_TOKEN del repo no arranca otro workflow — GitHub evita así los bucles — y el tag se quedaría ahí sin release detrás, que es exactamente el fallo que esto viene a cerrar. Por eso release.yml gana un workflow_call.

Cambio de comportamiento a tener en cuenta

release.yml ahora hace checkout del tag y no de la rama, para que lo que se atesta sea el commit que el tag nombra. Eso hace que el disparo manual desde Actions necesite un tag que ya exista: antes gh release create lo creaba al final. Queda dicho en la descripción del input, y el camino manual sigue siendo git tag && git push.

La comprobación tag ↔ constante que ya existía se queda: ahora el tag se deriva de la constante y además se verifica contra ella.

🤖 Generated with Claude Code

El release solo salia si alguien se acordaba de empujar el tag, y el 17 de
septiembre nadie se acordo: #26 dejo internal/tui.Version en 0.1.20 y cuatro
dias despues /releases/latest seguia respondiendo v0.1.19. Como install.sh
resuelve la version contra ese endpoint, el instalador siguio sirviendo una
version sin los fixes ya mergeados - entre ellos el wire_api de #24, que es
como nos enteramos.

Ahora el bump es el acto de publicar. tag.yml espera a que CI pase en main,
lee la constante, y si ese tag no existe lo crea y llama al workflow de
release. Un merge que no toca la constante no etiqueta nada.

Espera a CI en vez de ir con el push porque lo que se publica son binarios
firmados que luego alguien se baja con curl, y vet, los tests en ubuntu y
macos, el escaneo de vulnerabilidades y la prueba del instalador son lo unico
que hay entre un merge malo y esa maquina.

Llama al workflow de release en vez de dejar que lo dispare el tag: un tag
empujado con el GITHUB_TOKEN del repo no arranca otro workflow - GitHub evita
asi los bucles - y el tag se quedaria ahi sin release detras, que es
exactamente el fallo que esto viene a cerrar.

release.yml pasa a hacer checkout del tag y no de la rama, para que lo que se
atesta sea el commit que el tag nombra. Eso hace que el disparo manual
necesite un tag que ya exista; queda dicho en la descripcion del input.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@borjaperfra
borjaperfra merged commit fa9df6e into main Sep 21, 2026
6 checks passed
@borjaperfra
borjaperfra deleted the ci/tag-al-subir-la-version branch September 21, 2026 16:17
@borjaperfra borjaperfra mentioned this pull request Sep 21, 2026
borjaperfra added a commit that referenced this pull request Sep 21, 2026
Entrega lo mergeado desde la 0.1.20:

- #25 el enlace de login dice que vence, y fuera la pantalla que ya no se
  dibujaba
- #27 el config.toml que Codex no abria, y un perfil por modelo con su
  ventana
- #29 el tablero recoge tambien los PR de fuera
- #30 como salir del prompt del enlace, y un test que no dependa del ancho
  del terminal

Primer release que sale por si solo: desde la #28 el tag lo crea tag.yml al
pasar CI en main, leyendo esta constante.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants