fix(ci): add Ruby build dependencies to e2e Docker image#8910
Conversation
The test_gem_slow e2e test compiles Ruby from source but the Docker image was missing libssl-dev, libreadline-dev, libyaml-dev, libffi-dev, and zlib1g-dev, causing ruby-build to fail when building OpenSSL. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Greptile SummaryThis PR adds five standard Ruby build dependencies (
Confidence Score: 5/5Safe to merge — minimal-scope infrastructure change adding missing Ruby build dependencies to the CI Docker image Single-file change inserting five well-known system library packages into an existing apt-get install block. No application logic is touched, no regressions are possible, and the fix directly addresses a confirmed CI failure with a successful verification already reported by the author. No files require special attention Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[Docker Build: ubuntu:26.04] --> B[apt-get install]
B --> C[Build tools: build-essential, bison, curl, git...]
B --> D[NEW Ruby deps: libssl-dev, libreadline-dev,
libyaml-dev, libffi-dev, zlib1g-dev]
B --> E[Other: python3, fish, zsh, jq, libicu-dev...]
C & D & E --> F[Node.js 22 → /opt/node]
F --> G[npm install -g nushell]
G --> H[Symlinks in /usr/local/bin]
H --> I[apt-get clean]
I --> J[Image ready for e2e tests]
J --> K[test_gem_slow: ruby-build compiles Ruby ✅]
Reviews (1): Last reviewed commit: "fix(ci): add Ruby build dependencies to ..." | Re-trigger Greptile |
There was a problem hiding this comment.
Code Review
This pull request updates the Dockerfile to include several additional development libraries (libffi-dev, libreadline-dev, libssl-dev, libyaml-dev, and zlib1g-dev) required for the environment. The review suggests maintaining the package list in alphabetical order to improve maintainability and readability.
| libffi-dev \ | ||
| libicu-dev \ | ||
| libreadline-dev \ | ||
| libssl-dev \ | ||
| libyaml-dev \ | ||
| pipx \ | ||
| python3-full \ | ||
| python3-venv \ | ||
| unzip \ | ||
| xz-utils \ | ||
| zlib1g-dev \ |
## Summary - Add `autoconf`, `cargo`, `libncurses-dev` to e2e Docker image - Fixes all 8 failing e2e jobs: - `test_cargo_compile_slow`, `test_cargo_binstall_slow`, `test_cargo_features_slow`, `test_cargo_compile_git_slow`: cargo not installed - `test_erlang_slow`: missing autoconf and libncurses-dev - `test_vfox_python_slow`, `test_node_slow`, `test_gem_slow`: already fixed by #8910 ## Test plan - [x] Reproduced all failures on bamboo - [x] Verified Erlang 27.2 builds with autoconf + libncurses-dev - [x] Verified Python 3.12.0, Node, Ruby all build with current deps - [x] Docker image build triggered: https://github.com/jdx/mise/actions/runs/23987561675 🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Low Risk** > Low risk: only expands the e2e CI Docker image build dependencies; main risk is slightly larger image size or package version conflicts affecting CI builds. > > **Overview** > Updates the e2e test Docker image to install additional build dependencies (`autoconf`, `cargo`, `libncurses-dev`) so tool/plugin builds that rely on Rust and certain native libraries succeed in CI. > > <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit ca6d245. Bugbot is set up for automated code reviews on this repo. Configure [here](https://www.cursor.com/dashboard/bugbot).</sup> <!-- /CURSOR_SUMMARY --> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Hyperfine Performance
|
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
mise-2026.4.3 x -- echo |
24.8 ± 1.2 | 22.0 | 28.9 | 1.01 ± 0.07 |
mise x -- echo |
24.6 ± 1.1 | 22.4 | 30.7 | 1.00 |
mise env
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
mise-2026.4.3 env |
24.1 ± 1.2 | 21.7 | 29.9 | 1.01 ± 0.07 |
mise env |
23.8 ± 1.1 | 22.0 | 26.0 | 1.00 |
mise hook-env
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
mise-2026.4.3 hook-env |
24.1 ± 1.5 | 22.3 | 31.2 | 1.00 |
mise hook-env |
24.3 ± 1.2 | 22.7 | 26.8 | 1.01 ± 0.08 |
mise ls
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
mise-2026.4.3 ls |
21.8 ± 1.3 | 19.6 | 24.1 | 1.05 ± 0.08 |
mise ls |
20.8 ± 0.9 | 19.8 | 23.8 | 1.00 |
xtasks/test/perf
| Command | mise-2026.4.3 | mise | Variance |
|---|---|---|---|
| install (cached) | 149ms | 152ms | -1% |
| ls (cached) | 79ms | 79ms | +0% |
| bin-paths (cached) | 83ms | 83ms | +0% |
| task-ls (cached) | 807ms | 808ms | +0% |
## Summary - Add `autoconf`, `cargo`, `libncurses-dev`, `pkg-config` to e2e Docker image - Fixes all 8 failing e2e jobs: - `test_cargo_*_slow`: cargo not installed, pkg-config missing for openssl-sys - `test_erlang_slow`: missing autoconf and libncurses-dev - `test_vfox_python_slow`, `test_node_slow`, `test_gem_slow`: already fixed by #8910 ## Test plan - [x] Reproduced all failures on bamboo - [x] Verified Erlang 27.2, Python 3.12.0, Node, Ruby all build with new deps - [x] Docker image build triggered: https://github.com/jdx/mise/actions/runs/23987968955 🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Low Risk** > Low risk: a single additional system package in the CI/e2e container, with minimal chance of impacting runtime behavior outside image build size/time. > > **Overview** > Ensures the e2e Docker image includes the missing build tool `pkg-config`, improving CI reliability for components that compile native dependencies during end-to-end tests. > > <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit dca8a93. Bugbot is set up for automated code reviews on this repo. Configure [here](https://www.cursor.com/dashboard/bugbot).</sup> <!-- /CURSOR_SUMMARY --> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
### 🚀 Features - **(ci)** auto-convert external PRs to draft mode by @jdx in [#8896](#8896) - **(deps)** add `depends` field for user-specified tool dependencies by @cprecioso in [#8776](#8776) - **(dotnet)** support runtime-only installs by @fragon10 in [#8524](#8524) - **(npm)** apply install_before to transitive dependencies by @risu729 in [#8851](#8851) - **(task)** allow passing arguments to task dependencies via {{usage.*}} templates by @jdx in [#8893](#8893) - add options field to BackendListVersionsCtx by @esteve in [#8875](#8875) ### 🐛 Bug Fixes - **(backend)** filter PEP 440 .dev versions in fuzzy version matching by @richardthe3rd in [#8849](#8849) - **(ci)** update COPR BuildRequires rust version to match MSRV 1.88 by @jdx in [#8911](#8911) - **(ci)** add Ruby build dependencies to e2e Docker image by @jdx in [#8910](#8910) - **(ci)** add missing build dependencies to e2e Docker image by @jdx in [#8912](#8912) - **(ci)** add missing build dependencies to e2e Docker image by @jdx in [#8914](#8914) - **(ci)** use Node 24 LTS for corepack e2e test by @jdx in [#8915](#8915) - **(ci)** add libxml2 and pkg-config to e2e Docker image by @jdx in [#8917](#8917) - **(ci)** add libxml2-dev to e2e image and disable Swift SPM tests by @jdx in [#8918](#8918) - **(docs)** use sans-serif font for badges by @jdx in [#8887](#8887) - **(env)** parse --env=VALUE and -E=VALUE flag forms correctly by @jdx in [#8889](#8889) - **(exec)** use i64::from() for seccomp syscall numbers to survive autofix by @jdx in [#8882](#8882) - **(github)** preserve tool options like filter_bins when version specified via CLI by @jdx in [#8888](#8888) - **(github)** use alias-specific options when tool_alias has its own config by @jdx in [#8892](#8892) - **(install)** add locked_verify_provenance setting and detect github attestations at lock time by @jdx in [#8901](#8901) - **(lock)** prune stale version entries during filtered `mise lock <tool>` runs by @altendky in [#8599](#8599) - **(python)** use lockfile URL for precompiled installs by @hehaoqian in [#8750](#8750) - **(release)** verify all build targets succeed before releasing by @jdx in [#8886](#8886) - **(ruby)** support build revisions for precompiled binaries in mise.lock by @jdx in [#8900](#8900) - **(swift)** fall back to Ubuntu 24.04 for unsupported Ubuntu versions by @jdx in [#8916](#8916) - **(zsh)** avoid duplicate trust warning after cd by @timothysparg in [#8898](#8898) - update flake.lock and add fix for rust-bindgen to default.nix by @esteve in [#8874](#8874) - when direnv diff is empty, do not try to parse it by @yaleman in [#8857](#8857) - skip trust check for plain .tool-versions in task list by @dportalesr in [#8876](#8876) ### 🚜 Refactor - **(go)** rename go_* settings to go.* namespace by @jdbruijn in [#8598](#8598) ### 📚 Documentation - **(tasks)** clarify task_config.includes behavior by @risu729 in [#8905](#8905) ### 🧪 Testing - **(ci)** run e2e tests inside Docker containers by @jdx in [#8899](#8899) ### 📦️ Dependency Updates - bump ubi from 0.8 to 0.9 by @jdx in [#8906](#8906) - bump zip from 3 to 8 by @jdx in [#8908](#8908) - update lockfile deps (hold back rattler) by @jdx in [#8909](#8909) - update bun.lock by @jdx in [#8913](#8913) ### 📦 Registry - add turso ([github:tursodatabase/turso-cli](https://github.com/tursodatabase/turso-cli)) by @kenn in [#8884](#8884) - remove carp test by @jdx in [#8894](#8894) ### Chore - **(ci)** add workflow to warn PRs modifying vendored aqua-registry by @jdx in [#8897](#8897) - **(ci)** use github.token for draft conversion in auto-draft workflow by @jdx in [#8903](#8903) - remove deprecated settings older than 12 months by @jdx in [#8904](#8904) ### New Contributors - @dportalesr made their first contribution in [#8876](#8876) - @timothysparg made their first contribution in [#8898](#8898) - @hehaoqian made their first contribution in [#8750](#8750) - @jdbruijn made their first contribution in [#8598](#8598) - @cprecioso made their first contribution in [#8776](#8776) - @yaleman made their first contribution in [#8857](#8857) - @kenn made their first contribution in [#8884](#8884) - @fragon10 made their first contribution in [#8524](#8524) ## 📦 Aqua Registry Updates #### New Packages (6) - [`ahkohd/oyo`](https://github.com/ahkohd/oyo) - [`bellicose100xp/jiq`](https://github.com/bellicose100xp/jiq) - [`kurama/dealve-tui`](https://github.com/kurama/dealve-tui) - [`micahkepe/jsongrep`](https://github.com/micahkepe/jsongrep) - [`textfuel/lazyjira`](https://github.com/textfuel/lazyjira) - [`ubugeeei/vize`](https://github.com/ubugeeei/vize) #### Updated Packages (1) - [`sigstore/cosign`](https://github.com/sigstore/cosign)
Summary
libssl-dev,libreadline-dev,libyaml-dev,libffi-dev, andzlib1g-devto the e2e Docker imagetest_gem_slowfailure whereruby-buildfailed compiling OpenSSL from source because system dev headers were missingTest plan
🤖 Generated with Claude Code
Note
Low Risk
Low risk: only expands the e2e Docker image's apt dependencies to provide missing system headers for building Ruby/OpenSSL, with no runtime logic changes.
Overview
Updates the e2e test Docker image to install additional development libraries (e.g.,
libssl-dev,libreadline-dev,libyaml-dev,libffi-dev,zlib1g-dev) needed for compiling Ruby and native extensions during CI.This unblocks Ruby builds in e2e/CI environments where
ruby-buildpreviously failed due to missing OpenSSL and related dev headers.Reviewed by Cursor Bugbot for commit 5d76c1f. Bugbot is set up for automated code reviews on this repo. Configure here.