feat(ruby): M6c — release lane + CI - #2859
Draft
filip-michalsky wants to merge 6 commits into
Draft
Conversation
Release plumbing for the Ruby SDK, mirroring the Python lane: - packages/sdk-ruby/package.json: changesets version proxy (@browserbasehq/stagehand-ruby, allowed in check-changesets); version baseline 4.0.0 — the RubyGems `stagehand` name is Browserbase-owned (retired v3 HTTP client at 3.x) and v4 continues it, like PyPI/npm - scripts/release: ruby-version.ts (version.rb parsing + semver→gem conversion), sync-ruby-version.ts (proxy → version.rb + Gemfile.lock, --check mode, wired into `just _version` and `just check`), ruby-alpha-version.ts (snapshot → <next>.pre.alpha.<N>), ruby-publish-status.ts (pending changesets / prerelease / already-on- RubyGems all gate publishing); 13 new tests - packages/sdk-ruby/scripts/build.rb: stdlib-only gem build that stages the extension into lib/stagehand/_extension (the path ExtensionAssets resolves first) and verifies the built gem carries it + the RBS sigs - packages/sdk-ruby/scripts/smoke.rb: installed-gem smoke test (embedded extension, real Chrome against a local fixture server, Response checks) - .github/workflows/publish-ruby.yml: build + smoke + RubyGems trusted publishing + stagehand-ruby@<version> tag; workflow_dispatch now, workflow_call for release.yml wiring once the SDK reaches its release bar (docs still pending) - ci.yml: sdk-ruby change filter + ruby-checks (rake: tests + RBS, generator drift) + ruby-gem-smoke jobs; release.yml sets up Ruby for the just recipes; Justfile install/test/build/_version cover Ruby; Gemfile.lock is now committed for reproducible CI Verified locally: gem builds with extension embedded (34 files), installs into a clean GEM_HOME, and the smoke test passes against real Chrome. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
This was referenced Aug 30, 2026
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…rom the repo root) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…old CI runners) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…e the byte assertion) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… cold CI runners) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Part of the AP-2857 parity stack:
Stack: #2820 ← #2854 (M1–M2) ← #2855 (M3) ← #2851 (M4) ← #2857 (M5) ← #2858 (M6a) ← this PR (M6c) ← M6d
Release plumbing for the Ruby SDK, mirroring the Python lane:
@browserbasehq/stagehand-ruby(allowed in check-changesets). Version baseline 4.0.0: the RubyGemsstagehandname is Browserbase-owned — the retired v3 HTTP client last published 3.21.0 from browserbase/stagehand-ruby — and v4 continues the name at 4.x, exactly like PyPI/npm.sync-ruby-version.tskeepsversion.rb+Gemfile.lockin lock-step with the proxy (semver → gem.pre.conversion), wired intojust _versionandjust check;ruby-alpha-version.tsmaps snapshot versions onto<next>.pre.alpha.<N>;ruby-publish-status.tsgates publishing (pending changesets / prerelease / already published). 13 new tests.scripts/build.rb, stdlib-only) stages the extension intolib/stagehand/_extension— the pathExtensionAssetsresolves first — and verifies the built gem carries it plus the RBS signatures. Smoke test (scripts/smoke.rb) runs against the installed gem: embedded extension + real Chrome against a local fixture server.stagehand-ruby@<version>tag.workflow_dispatchfor the first release plusworkflow_callfor release.yml wiring; deliberately not wired into release.yml yet (docs are still pending, and the first v4 publish over the 3.x gem is a product call). Ops prerequisite: configure RubyGems trusted publishing for this repo + workflow.sdk-rubychange filter,ruby-checks(rake: 123 tests + RBS validation, generator drift) andruby-gem-smokejobs; release.yml sets up Ruby;Gemfile.lockis now committed for reproducible CI.Verified locally: gem builds with extension embedded, installs into a clean GEM_HOME, smoke passes against real Chrome.
🤖 Generated with Claude Code