Skip to content

[DX-586] add release workflow#25

Draft
oerlandsen wants to merge 2 commits into
mainfrom
dx-586-release-workflow
Draft

[DX-586] add release workflow#25
oerlandsen wants to merge 2 commits into
mainfrom
dx-586-release-workflow

Conversation

@oerlandsen
Copy link
Copy Markdown

@oerlandsen oerlandsen commented May 15, 2026

Contexto

fintoc-ruby es el único SDK que no tenía workflow de release — los gems se subían a mano. Este PR agrega el flow consistente con los otros repos (npm/python): manual dispatch con bump elegido en la UI, identidad fin-releases[bot], GitHub Release.

¿Qué hay de nuevo?

  • .github/workflows/release.yml: workflow_dispatch (bump + release-notes inputs), gated a main. Corre rubocop + rspec, después release/preparegem build + gem pushrelease/finalize.
  • RELEASING.md: doc corta del flow.
  • bump-ruby.sh en release-action (commit 169fad2): bumpea lib/fintoc/version.rb y refresca Gemfile.lock.

Flujo

rubocop + rspec → release/prepare → gem build + gem push → release/finalize

Detalle de prepare/finalize: igual que en los otros SDKs. Si gem push falla, lo de prepare vive solo en el runner — el remote no se toca. Si falla finalize después del push, el gem ya está en RubyGems pero falta el tag/release; recovery es PR con el commit + gh release create.

Tests

  • rubocop + rspec corren en cada release (mismas suites que ci.yml).
  • No hay tests del workflow propio. Primer test real va a ser apretar Run workflow con bump: patch (v1.2.0 → v1.2.1).

Safety Checks

  • Versión bumpeada por el bot (no hace falta make bump! manual previo)
  • App fin-releases ya en bypass del branch protection de main

Consideraciones

Hay que crear el secret RUBYGEMS_API_KEY antes de gatillar el primer release. El gemspec tiene rubygems_mfa_required = true, así que el API key debe venir de una cuenta de RubyGems con MFA habilitada y con scope push_rubygem.

Otras notas:

  • Tags actuales (v1.0.0, v1.1.0, v1.2.0) ya usan prefix v. El workflow pasa tag-prefix: v para mantener convención.

Rollback

Seguro.

oerlandsen and others added 2 commits May 15, 2026 15:48
Greenfield release workflow following the pattern shared with the other
SDKs: workflow_dispatch with `bump` and `release-notes` inputs, gated
to runs from `main`.

The job runs rubocop + rspec (same checks as ci.yml), then:

  release/prepare → gem build + gem push → release/finalize

`release/prepare` bumps lib/fintoc/version.rb and Gemfile.lock via the
bump-ruby script. Commit, tag and GitHub Release are authored by
`fin-releases[bot]` through the App.

`gem push` uses the RUBYGEMS_API_KEY secret. The gem has
`rubygems_mfa_required = true` so the API key must come from a
RubyGems account with MFA enabled.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Documenta el flow nuevo: inputs del dispatch, qué hace cada step,
y los caminos de recovery por escenario.

Co-Authored-By: Claude Opus 4.7 (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.

1 participant