Skip to content

fix(ci): add Ruby build dependencies to e2e Docker image#8910

Merged
jdx merged 1 commit intomainfrom
fix/e2e-ruby-build-deps
Apr 4, 2026
Merged

fix(ci): add Ruby build dependencies to e2e Docker image#8910
jdx merged 1 commit intomainfrom
fix/e2e-ruby-build-deps

Conversation

@jdx
Copy link
Copy Markdown
Owner

@jdx jdx commented Apr 4, 2026

Summary

  • Add libssl-dev, libreadline-dev, libyaml-dev, libffi-dev, and zlib1g-dev to the e2e Docker image
  • Fixes test_gem_slow failure where ruby-build failed compiling OpenSSL from source because system dev headers were missing

Test plan

  • Reproduced failure on bamboo with current image (OpenSSL build fails)
  • Verified fix on bamboo: Ruby 4.0.2 compiles successfully with system libssl-dev

🤖 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-build previously 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.

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-apps
Copy link
Copy Markdown
Contributor

greptile-apps Bot commented Apr 4, 2026

Greptile Summary

This PR adds five standard Ruby build dependencies (libssl-dev, libreadline-dev, libyaml-dev, libffi-dev, zlib1g-dev) to the e2e Docker image, fixing a confirmed CI failure where ruby-build could not compile Ruby from source due to missing system headers.

  • All five packages are well-known, standard prerequisites for compiling Ruby via ruby-build
  • They are inserted in alphabetical order, consistent with the existing apt-get install list style
  • No logic changes; this is a pure infrastructure fix scoped to the single CI Dockerfile
  • The root cause (libssl-dev absence causing OpenSSL compilation failure) matches the observed test_gem_slow failure described in the PR

Confidence Score: 5/5

Safe 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

Filename Overview
packaging/e2e/Dockerfile Adds libssl-dev, libreadline-dev, libyaml-dev, libffi-dev, and zlib1g-dev to fix Ruby compilation in CI e2e tests

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 ✅]
Loading

Reviews (1): Last reviewed commit: "fix(ci): add Ruby build dependencies to ..." | Re-trigger Greptile

Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Comment thread packaging/e2e/Dockerfile
Comment on lines +27 to +37
libffi-dev \
libicu-dev \
libreadline-dev \
libssl-dev \
libyaml-dev \
pipx \
python3-full \
python3-venv \
unzip \
xz-utils \
zlib1g-dev \
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

To improve maintainability and readability, please keep the list of installed packages sorted alphabetically.

    libffi-dev \
    libicu-dev \
    libreadline-dev \
    libssl-dev \
    libyaml-dev \
    pipx \
    python3-full \
    python3-venv \
    unzip \
    xz-utils \
    zlib1g-dev

@jdx jdx merged commit 5c4fff4 into main Apr 4, 2026
42 of 44 checks passed
@jdx jdx deleted the fix/e2e-ruby-build-deps branch April 4, 2026 20:57
jdx added a commit that referenced this pull request Apr 4, 2026
## 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>
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Apr 4, 2026

Hyperfine Performance

mise x -- echo

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%

jdx added a commit that referenced this pull request Apr 4, 2026
## 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>
jdx pushed a commit that referenced this pull request Apr 5, 2026
### 🚀 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)
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