Skip to content

chore(ruby): upgrade to Ruby 3.4 from EOL 2.6.1#442

Merged
sanketsudake merged 3 commits into
masterfrom
ruby-updates
Jun 6, 2026
Merged

chore(ruby): upgrade to Ruby 3.4 from EOL 2.6.1#442
sanketsudake merged 3 commits into
masterfrom
ruby-updates

Conversation

@sanketsudake
Copy link
Copy Markdown
Member

What

Part of the dependency-update series (#436#441). Major upgrade of the ruby environment:

  • Base: ruby:2.6.1-alpine3.9 (EOL March 2020) → ruby:3.4-alpine for env + builder. The builder also stops apk-installing the distro ruby/bundler alongside the base image's ruby (kept build-base for native gem compilation).
  • Rack pinned ~> 2.2 (resolves 2.2.23) rather than Rack 3 — server.rb uses Rack::Handler::Thin.run, and Rack 3 removed the handler registry while thin's Rack 3 support is incomplete. thin resolves to 2.0.1. Gemfile.lock regenerated on ruby 3.4 with gnu/musl amd64+arm64 platforms.
  • Multi-arch fix in fission/specializer.rb: vendored native-extension load path was hardcoded to x86_64-linux; now matches any platform dir (the image is musl-based and built for amd64+arm64).
  • Builder defaultBuildCmd: bundle install --deployment → bundler 2.x config form (the flag is deprecated and removal-tracked).
  • examples/parse lockfile refreshed: nokogiri 1.12.5 → 1.19.3 (supersedes dependabot Bump nokogiri from 1.12.5 to 1.16.5 in /ruby/examples/parse #366's 1.16.5).
  • envconfig.json: runtimeVersion 3.4, version 1.31.1 → 1.32.0; environments.json regenerated.

Verification (local)

  • ✅ env + builder images build on ruby:3.4-alpine
  • ✅ Single-file path: boot → healthz 200 → /v2/specialize (hello.rb) 201 → invoke returns "Hello, world!"
  • Full package path (the risky one): builder runs defaultBuildCmd on examples/parse (vendors the native musl nokogiri 1.19.3 gem) → directory-mode /v2/specialize 201 → invoke parses XML and returns the message — confirming the new multi-platform vendor loading works

Supersedes

Note: ruby has a build-only CI job (skaffold), no fission e2e test — hence the thorough local verification above.

🤖 Generated with Claude Code

- Base image ruby:2.6.1-alpine3.9 (EOL March 2020) -> ruby:3.4-alpine
  for env and builder; builder no longer apk-installs the distro ruby
  toolchain alongside the base image's ruby
- Pin rack "~> 2.2" (Rack 3 removed Rack::Handler and thin's Rack 3
  support is incomplete); regenerate Gemfile.lock on ruby 3.4
  (rack 2.2.23, thin 2.0.1) with linux gnu/musl amd64+arm64 platforms
- fission/specializer.rb: load vendored native-extension dirs for any
  platform instead of hardcoding x86_64-linux (the env is now
  musl-based and multi-arch)
- builder defaultBuildCmd: replace deprecated `bundle install
  --deployment` with the bundler 2.x config form
- Refresh examples/parse Gemfile.lock (nokogiri 1.12.5 -> 1.19.3,
  supersedes #366 and #384-adjacent pins)
- envconfig runtimeVersion 3.4, version 1.32.0; environments.json
  regenerated

Verified locally: env + builder images build; hello.rb specialize +
invoke pass; full package path passes (builder vendors native
nokogiri musl gem, directory-mode /v2/specialize 201, invoke parses
XML correctly).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
hiberbee/github-action-skaffold@1.27.0 pins skaffold 2.3.1, which
cannot parse the repo's skaffold/v4beta13 config, so the ruby job
failed whenever it triggered. Use SKAFFOLD_PROFILE=ruby make
skaffold-run like the other env jobs (setup-cluster already installs
a current skaffold).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
sanketsudake added a commit that referenced this pull request Jun 6, 2026
Same fix as #442/#443/#444: hiberbee/github-action-skaffold pins
skaffold 2.3.1, which cannot parse the repo's skaffold/v4beta13
config. Needed here so the perl job can validate the kind-action
hotfix end to end (identical hunk to #444, merges cleanly).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
sanketsudake added a commit that referenced this pull request Jun 6, 2026
* ci: fix broken setup-kind action with helm/kind-action

engineerd/setup-kind v0.6.2 fails with 'File not found:
dist/main/index.js' (the tagged commit does not ship the compiled
action), breaking the setup-cluster step for every env job. Switch to
the maintained helm/kind-action v1.14.0 with cluster_name kind so the
kind-kind kubectl context and `kind load docker-image` defaults keep
working.

Also make collect-fission-dump best effort: a missing fission CLI
(setup failed before installing it) or empty dump no longer masks the
original job failure.

The broken bump in #436 went unnoticed because that PR touched no env
directories, so no job exercised setup-cluster pre-merge; this PR
includes a perl README link fix so the perl job validates the action
end to end.

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

* ci(perl): run skaffold via make instead of the stale skaffold action

Same fix as #442/#443/#444: hiberbee/github-action-skaffold pins
skaffold 2.3.1, which cannot parse the repo's skaffold/v4beta13
config. Needed here so the perl job can validate the kind-action
hotfix end to end (identical hunk to #444, merges cleanly).

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

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@sanketsudake sanketsudake merged commit 9309c4f into master Jun 6, 2026
15 checks passed
@sanketsudake sanketsudake deleted the ruby-updates branch June 6, 2026 16:23
sanketsudake added a commit that referenced this pull request Jun 6, 2026
…444)

perl:
- Pin perl:latest -> perl:5.42 (reproducible builds);
  envconfig runtimeVersion 5.42, version 1.32.0

tensorflow-serving:
- Pin unpinned tensorflow/serving -> tensorflow/serving:2.20.0
  (latest stable); upstream publishes amd64 only, so the Makefile
  target restricts PLATFORMS to linux/amd64
- GO_VERSION 1.13 (EOL 2021) -> 1.26 with go-modules migration: the
  Dockerfile used a pre-modules GOPATH layout and bare `go get`,
  which modern Go refuses; now go mod init/tidy/build (resolves
  pkg/errors + zap)
- envconfig runtimeVersion 2.20.0, version 1.32.0

CI: perl and tensorflow jobs drop hiberbee/github-action-skaffold
(pins skaffold 2.3.1, which cannot parse our skaffold/v4beta13
config) in favour of make skaffold-run, same as #442/#443.

environments.json regenerated.

Verified locally: perl image builds and boots (Dancer2 routes respond
on perl 5.42.2); tensorflow image builds for linux/amd64 with the
modules migration; make dry-run confirms the PLATFORMS override
produces a valid amd64-only push for the release flow.

Co-authored-by: Claude Opus 4.8 (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