Skip to content

[DX-586] migrate release to fin-releases composite action#44

Merged
oerlandsen merged 3 commits into
mainfrom
dx-586-release-workflow
May 15, 2026
Merged

[DX-586] migrate release to fin-releases composite action#44
oerlandsen merged 3 commits into
mainfrom
dx-586-release-workflow

Conversation

@oerlandsen
Copy link
Copy Markdown
Contributor

@oerlandsen oerlandsen commented May 14, 2026

Description

Migra el flow de release de fintoc-cli al patrón compartido de hermes (release/preparenpm publishrelease/finalize) y separa la actualización de Homebrew a su propio workflow.

Commits

  1. bfeee8f — Migra release.yml: trigger pasa de pull_request closed con head release/* a workflow_dispatch manual. Preserva los mismos checks (lint/typecheck/build/test) y el npm publish --access public --provenance con trusted publishing. Bump, tag y GitHub Release los hace la composite action de hermes.
  2. 23b91c6 — Saca Homebrew a update-homebrew.yml, gatillado por release: published (auto) y workflow_dispatch con input opcional de versión (manual). Reemplaza el PAT HOMEBREW_TAP_GITHUB_TOKEN por un token de la App fin-releases scopeado a homebrew-tap. Scripts en .github/scripts/update-homebrew/.

Diferencias vs hoy

Hoy Este PR
Trigger PR release/* mergeado botón en Actions
Bump manual en PR dropdown del dispatch
Identidad commit/tag/release mixto (github-actions[bot]) fin-releases[bot] (App)
GitHub Release entry ✓ con notes opcional
Tag lightweight anotado
Homebrew failure bloquea el release aislada, retryable independiente
HOMEBREW_TAP_GITHUB_TOKEN PAT en uso inerte (sin uso, follow-up borrar)

Failure recovery

Falla en Estado Recovery
Cualquier step de release.yml antes del npm publish Nada cambió en remote Re-run del Release
npm publish Bump + tag locales en runner, se descartan Re-run del Release
finalize (push o release create) Paquete publicado, falta tag/release Manual: git push --follow-tags + gh release create
update-homebrew npm + tag + release OK; fórmula atrasada Re-run del Update Homebrew o workflow_dispatch con input version

Requirements

  • App fin-releases instalada en este repo y en fintoc-com/homebrew-tap :check:

Additional changes

None.

Reemplaza el trigger `pull_request closed` con head `release/*` por un
`workflow_dispatch` manual que delega bump + tag + GitHub Release a la
composite action `fin-releases` de hermes:

  release/prepare  →  npm publish  →  release/finalize

Conserva los mismos checks (lint, typecheck, build, test) y los flags de
publish (`--access public --provenance` con trusted publishing via
id-token). Adiós al patrón de PR `release/*` con bump manual de
package.json: ahora el bump lo hace el bot via el dropdown del dispatch.

La actualización de la fórmula de Homebrew se separa a su propio
workflow en un commit siguiente.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@oerlandsen oerlandsen force-pushed the dx-586-release-workflow branch from 23b91c6 to d87f550 Compare May 14, 2026 21:25
@oerlandsen oerlandsen marked this pull request as ready for review May 15, 2026 16:40
@oerlandsen oerlandsen requested review from FranciscaOtero, aenrione and daleal and removed request for FranciscaOtero and daleal May 15, 2026 16:40
Copy link
Copy Markdown
Member

@daleal daleal left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Se ve bien. Dejo unas sugerencias eso sí, para no tener tantos comentarios innecesarios. Aparte de eso lo veo gucci

echo "Found @fintoc/cli@$VERSION on npm"
exit 0
fi
echo "Attempt $i/30 - waiting 10s..."
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Este 30 podría ser una constante definida arriba en el archivo con un buen nombre, igual que el 10 del sleep, sería más descriptivo que el comentario de arriba que dice times out after 30 attempts creo. Podría ser MAX_ATTEMPTS = 30 y de ahí es obvio

Comment thread .github/scripts/update-homebrew/update-formula.sh Outdated
Comment thread RELEASING.md Outdated
oerlandsen and others added 2 commits May 15, 2026 13:33
Saca la actualización de la fórmula de `release.yml` y la pone en su
propio workflow `update-homebrew.yml`, gatillado por `release: published`
(automático) y `workflow_dispatch` con input opcional de versión
(manual, para re-sincronizar).

Beneficios:

- Falla aislada: si Homebrew falla, npm + tag + GitHub Release siguen
  consistentes. Re-correr Homebrew solo no requiere re-publish.
- Recovery via workflow_dispatch con `version` input, para forzar la
  sincronización de cualquier release.
- Reemplaza el PAT `HOMEBREW_TAP_GITHUB_TOKEN` por un token de la App
  `fin-releases` minteado con `repositories: homebrew-tap`. Cero PATs
  personales en el path. El secret viejo queda inerte para limpieza
  posterior.
- Identidad del commit en homebrew-tap pasa a ser `fin-releases[bot]`.

El workflow es declarativo: cada step llama un script en
`.github/scripts/update-homebrew/` con `env:`. La heredoc Ruby de la
fórmula vive en `update-formula.sh`, no en el YAML.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@oerlandsen oerlandsen force-pushed the dx-586-release-workflow branch from 77a65f3 to 9099d5b Compare May 15, 2026 17:37
@oerlandsen oerlandsen merged commit 93a19a9 into main May 15, 2026
2 checks passed
@oerlandsen oerlandsen deleted the dx-586-release-workflow branch May 15, 2026 17:40
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.

3 participants