Skip to content

Fix Ruby SSI deployment lockfiles#7174

Draft
lloeki wants to merge 3 commits into
mainfrom
fix-ruby-ssi-deployment-lockfiles
Draft

Fix Ruby SSI deployment lockfiles#7174
lloeki wants to merge 3 commits into
mainfrom
fix-ruby-ssi-deployment-lockfiles

Conversation

@lloeki

@lloeki lloeki commented Jun 18, 2026

Copy link
Copy Markdown
Member

Motivation

ruby-app-deployment-mode was temporarily disabled on Ruby 3.1 because the deployment-mode Dockerfile ran bundle lock --update during image builds. That made the test app resolve latest transitive dependencies from Rubygems and pick up i18n 1.15.0, which advertises Ruby 3.1 support but uses Fiber.[], a Ruby 3.2+ API.

These SSI apps should be reproducible and should not update dependency graphs while building test images.

Changes

  • Move the Ruby SSI Rails apps to per-Ruby Gemfiles and committed lockfiles under gemfiles/.
  • Keep root Gemfile files as convenience dispatch shims based on the current Ruby minor.
  • Pin i18n < 1.15 only for the Ruby 3.1 Rails 7 app lockfile.
  • Update Ruby SSI and lib-injection Rails Dockerfiles to copy the lockfile matching the installed Ruby minor before bundle install.
  • Remove the bundle lock --update path from deployment-mode Dockerfiles.
  • Re-enable RB31 for ruby-app-deployment-mode in the Docker SSI matrix.

Validation

  • python3 -m json.tool utils/scripts/ci_orchestrators/docker_ssi.json
  • git diff --check origin/main...HEAD
  • Generated per-Ruby lockfiles using ghcr.io/datadog/images-rb/engines/ruby:<minor> images.
  • Verified Ruby 3.1 Rails 7 deployment install uses i18n 1.14.8:
    • docker run ... ghcr.io/datadog/images-rb/engines/ruby:3.1 ... bundle config set --local deployment true && bundle install && bundle exec ruby -e ...
  • Verified Rails 6.1 Ruby 2.6 deployment install from committed lockfile.
  • Built lib-injection/build/docker/ruby/dd-lib-ruby-init-test-rails-bundle-deploy/Dockerfile successfully.
  • nix develop -c bash -lc "unset IN_NIX_SHELL; ./format.sh --check" gets through mypy and ruff, then fails on an unrelated pre-existing yamlfmt diff in manifests/python.yml.

Workflow

  1. ⚠️ Create your PR as draft ⚠️
  2. Work on you PR until the CI passes
  3. Mark it as ready for review
    • Test logic is modified? -> Get a review from RFC owner.
    • Framework is modified, or non obvious usage of it -> get a review from R&P team

🚀 Once your PR is reviewed and the CI green, you can merge it!

🛟 #apm-shared-testing 🛟

Reviewer checklist

  • Anything but tests/ or manifests/ is modified ? I have the approval from R&P team
  • A docker base image is modified?
    • the relevant build-XXX-image label is present
  • A scenario is added, removed or renamed?

lloeki added 3 commits June 18, 2026 16:43
Move the Ruby SSI Rails sample apps to dispatch Gemfiles with committed per-Ruby lockfiles. This makes each runtime use a reproducible dependency graph instead of sharing one lockfile across the matrix.

Keep Ruby 3.1 on i18n < 1.15 because i18n 1.15.0 advertises Ruby 3.1 support but uses Fiber.[], which is only available on Ruby 3.2 and newer.
Select the lockfile matching the installed Ruby minor before running Bundler in Ruby SSI and lib-injection Rails Dockerfiles.

This keeps deployment mode realistic while avoiding bundle lock --update during image builds, which made the apps resolve newly published transitive dependencies from Rubygems.
Re-enable RB31 for ruby-app-deployment-mode now that the Dockerfiles install from committed per-Ruby lockfiles instead of updating dependencies during image builds.
@github-actions

Copy link
Copy Markdown
Contributor

CODEOWNERS have been resolved as:

lib-injection/build/docker/ruby/lib_injection_rails61_app/gemfiles/common.gemfile  @DataDog/system-tests-core
lib-injection/build/docker/ruby/lib_injection_rails61_app/gemfiles/ruby-2.6.gemfile  @DataDog/system-tests-core
lib-injection/build/docker/ruby/lib_injection_rails_app/gemfiles/common.gemfile  @DataDog/system-tests-core
lib-injection/build/docker/ruby/lib_injection_rails_app/gemfiles/ruby-2.7.gemfile  @DataDog/system-tests-core
lib-injection/build/docker/ruby/lib_injection_rails_app/gemfiles/ruby-2.7.gemfile.lock  @DataDog/system-tests-core
lib-injection/build/docker/ruby/lib_injection_rails_app/gemfiles/ruby-3.0.gemfile  @DataDog/system-tests-core
lib-injection/build/docker/ruby/lib_injection_rails_app/gemfiles/ruby-3.0.gemfile.lock  @DataDog/system-tests-core
lib-injection/build/docker/ruby/lib_injection_rails_app/gemfiles/ruby-3.1.gemfile  @DataDog/system-tests-core
lib-injection/build/docker/ruby/lib_injection_rails_app/gemfiles/ruby-3.1.gemfile.lock  @DataDog/system-tests-core
lib-injection/build/docker/ruby/lib_injection_rails_app/gemfiles/ruby-3.2.gemfile  @DataDog/system-tests-core
lib-injection/build/docker/ruby/lib_injection_rails_app/gemfiles/ruby-3.2.gemfile.lock  @DataDog/system-tests-core
lib-injection/build/docker/ruby/lib_injection_rails_app/gemfiles/ruby-3.3.gemfile  @DataDog/system-tests-core
lib-injection/build/docker/ruby/lib_injection_rails_app/gemfiles/ruby-3.3.gemfile.lock  @DataDog/system-tests-core
lib-injection/build/docker/ruby/lib_injection_rails_app/gemfiles/ruby-3.4.gemfile  @DataDog/system-tests-core
lib-injection/build/docker/ruby/lib_injection_rails_app/gemfiles/ruby-3.4.gemfile.lock  @DataDog/system-tests-core
lib-injection/build/docker/ruby/dd-lib-ruby-init-test-rails-bundle-deploy/Dockerfile  @DataDog/system-tests-core
lib-injection/build/docker/ruby/dd-lib-ruby-init-test-rails-conflict/Dockerfile  @DataDog/system-tests-core
lib-injection/build/docker/ruby/dd-lib-ruby-init-test-rails-explicit/Dockerfile  @DataDog/system-tests-core
lib-injection/build/docker/ruby/dd-lib-ruby-init-test-rails-explicit/Dockerfile.lib_init_validator  @DataDog/system-tests-core
lib-injection/build/docker/ruby/dd-lib-ruby-init-test-rails-gemsrb/Dockerfile  @DataDog/system-tests-core
lib-injection/build/docker/ruby/dd-lib-ruby-init-test-rails-gemsrb/Dockerfile.lib_init_validator  @DataDog/system-tests-core
lib-injection/build/docker/ruby/dd-lib-ruby-init-test-rails/Dockerfile  @DataDog/system-tests-core
lib-injection/build/docker/ruby/dd-lib-ruby-init-test-rails/Dockerfile.lib_init_validator  @DataDog/system-tests-core
lib-injection/build/docker/ruby/lib_injection_rails61_app/Gemfile       @DataDog/system-tests-core
lib-injection/build/docker/ruby/lib_injection_rails_app/Gemfile         @DataDog/system-tests-core
utils/build/ssi/ruby/rails6-app-deployment-mode.Dockerfile              @DataDog/system-tests-core
utils/build/ssi/ruby/rails6-app-vendored-mode.Dockerfile                @DataDog/system-tests-core
utils/build/ssi/ruby/rails6-app.Dockerfile                              @DataDog/system-tests-core
utils/build/ssi/ruby/ruby-app-deployment-mode.Dockerfile                @DataDog/system-tests-core
utils/build/ssi/ruby/ruby-app-vendored-mode.Dockerfile                  @DataDog/system-tests-core
utils/build/ssi/ruby/ruby-app.Dockerfile                                @DataDog/system-tests-core
utils/scripts/ci_orchestrators/docker_ssi.json                          @DataDog/system-tests-core
lib-injection/build/docker/ruby/lib_injection_rails61_app/gemfiles/ruby-2.6.gemfile.lock  @DataDog/system-tests-core
lib-injection/build/docker/ruby/lib_injection_rails_app/Gemfile.lock    @DataDog/system-tests-core

@datadog-datadog-prod-us1

datadog-datadog-prod-us1 Bot commented Jun 18, 2026

Copy link
Copy Markdown

Pipelines  Tests

Fix all issues with BitsAI

⚠️ Warnings

🚦 4 Pipeline jobs failed

DataDog/system-tests | Ubuntu_24_amd64.MUL: [test-app-ruby-multicontainer]   View in Datadog   GitLab

DataDog/system-tests | Amazon_Linux_2023_amd64.CHA: [test-app-ruby]   View in Datadog   GitLab

DataDog/system-tests | Amazon_Linux_2023_amd64.HOS: [test-app-ruby]   View in Datadog   GitLab

View all 4 failed jobs.

ℹ️ Info

No other issues found (see more)

🧪 All tests passed
❄️ No new flaky tests detected

Useful? React with 👍 / 👎

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: d3b2ab6 | Docs | Datadog PR Page | Give us feedback!

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