Skip to content

ci: GitHub Actions (CI Ruby 2.7 + release a RubyGems) - #18

Merged
gedera merged 4 commits into
masterfrom
ci/github-actions
Jun 29, 2026
Merged

ci: GitHub Actions (CI Ruby 2.7 + release a RubyGems)#18
gedera merged 4 commits into
masterfrom
ci/github-actions

Conversation

@gedera

@gedera gedera commented Jun 29, 2026

Copy link
Copy Markdown
Owner

Agrega CI + release tag-driven, adaptando el workflow de bug_bunny/snoopy_afip al stack de este repo.

Workflows

  • main.yml — corre bundle exec rspec en PRs y push a master, sobre Ruby 2.7.
  • release.ymlgem build + gem push a RubyGems en tag v* (secret RUBYGEMS_API_KEY). Idéntico a bug_bunny/snoopy (Ruby 3.2, solo build+push).

Adaptaciones propias de cobro_digital (no es copy-paste)

cambio por qué
Ruby 2.7 (no 3.4.4) savon ~> 2.12.1 → httpi 2.x usa URI.escape, removido en Ruby 3.0. El único consumer (wispro_cloud) corre Ruby 2.7.6 con cobro_digital ~> 1.8.0.
+rspec ~> 3.13 al gemspec No estaba declarado en ningún lado → bundle exec rspec fallaba (rspec fuera del bundle). Bloqueante real.
quitar bundler ~> 2.6.6 bundler 2.6.x exige Ruby ≥ 3.1 → choca con el target 2.7.
required_ruby_version >= 2.7 documenta la restricción del stack savon.
borrar .travis.yml legacy (Ruby 1.8.7), CI muerto.

Notas

🤖 Generated with Claude Code

gedera and others added 3 commits June 29, 2026 13:46
…Travis

- main.yml: corre rspec en PRs y push a master sobre Ruby 2.7 (savon 2.12 /
  httpi 2.x no corre en Ruby 3.0+; el consumer wispro_cloud usa 2.7.6).
- release.yml: build + push a RubyGems en tag v* (secret RUBYGEMS_API_KEY).
- gemspec: declarar rspec (~> 3.13) —faltaba, la suite no corría—; quitar el
  pin de bundler (~> 2.6.6 exige Ruby 3.1+, choca con 2.7); required_ruby_version >= 2.7.
- Eliminar .travis.yml legacy (Ruby 1.8.7).

Adaptado del workflow de bug_bunny/snoopy_afip al stack de este repo.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Review multi-vendor (agy + opencode):
- release.yml: usar GEM_HOST_API_KEY nativo en vez de escribir
  ~/.gem/credentials con printf (no persiste el secreto en disco ni en el
  process list del runner).
- release.yml: ruby-version 3.2 -> 2.7 para alinear con CI y el constraint de
  savon (gem build evalúa el gemspec con el Ruby del runner).
- release.yml: quitar `packages: write` (least-privilege; se pushea a RubyGems,
  no a GHCR) y encadenar gem build && gem push.
- gemspec: required_ruby_version `>= 2.7` -> `['>= 2.7', '< 3.0']` para honrar
  la incompatibilidad declarada con Ruby 3.0+.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…pec explícito

Review multi-vendor r2 (opencode):
- main.yml: agregar `permissions: contents: read` (simetría con release.yml).
- release.yml: `persist-credentials: false` en checkout (defense-in-depth).
- release.yml: `gem build cobro_digital.gemspec` explícito (no wildcard).

Refutados: checkout@v5 "inexistente" (existe; lo usan bug_bunny/snoopy en CI
activa) y "bundler sin mención" (sí está en el commit previo).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@gedera

gedera commented Jun 29, 2026

Copy link
Copy Markdown
Owner Author

🤖 Review multi-vendor (opencode mimo-v2.5-pro + agy gemini-3.1-pro) — 2 rondas

r1 (agy 🔴 / opencode 🟡) → aplicadas 5 mejoras, varias superan el template de bug_bunny/snoopy:

  • GEM_HOST_API_KEY nativo en vez de escribir ~/.gem/credentials (no persiste el secreto en disco/process-list).
  • release.yml ruby 3.2 → 2.7 (alinea con CI + constraint savon).
  • quitar packages: write (least-privilege, no se pushea a GHCR).
  • gemspec required_ruby_version['>= 2.7', '< 3.0'].

r2 (ambos 🟡) → aplicadas 3 nits:

  • permissions: contents: read en main.yml (simetría).
  • persist-credentials: false en el checkout de release.yml.
  • gem build cobro_digital.gemspec explícito (no wildcard).

Adjudicación de lo no aplicado

  • actions/checkout@v5 "no existe" (agy) → falso positivo, conocimiento del modelo desactualizado. Verificado vía GitHub API: v5.0.0/v5.0.1 existen; bug_bunny/snoopy lo usan en CI activa.
  • "bundler removal sin mención" (opencode) → está en el commit message (opencode solo ve el diff).
  • Release sin gate de tests (agy) → decisión de diseño, no bug: es la convención del fleet (tag→publish; el humano taggea un commit verde). Se deja señalado para discusión futura, no se cambia unilateralmente.

Convergencia en lo sustantivo. Las objeciones residuales son stale-knowledge / cross-PR / design-choice, no defectos del diff.

@gedera
gedera merged commit be78739 into master Jun 29, 2026
1 check passed
@gedera
gedera deleted the ci/github-actions branch June 29, 2026 18:51
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