Repository navigation
refactor(ci): stop pinning rebar3 in the Elixir workflows - #197
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Advanced Run ID: 📒 Files selected for processing (2)
Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review. 📜 Recent review details⏰ Context from checks skipped due to timeout. (7)
|
| Layer / File(s) | Summary |
|---|---|
Update Elixir workflow configuration .github/workflows/elixir-ci.yml, .github/workflows/elixir.yml |
Both workflows use OTP 27.3.4.17 and no longer specify rebar3-version. Elixir remains at 1.18.2. |
Priority: ⬇️ Low
Estimated code review effort: 1 (Trivial) | ~3 minutes
Change: Bug fix
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
| Check name | Status | Explanation |
|---|---|---|
| Title check | ✅ Passed | The title clearly and concisely identifies the main change: removing the rebar3 pin from the Elixir workflows. |
| Description check | ✅ Passed | The description directly explains the workflow changes, the cause of the CI failure, the validation performed, and the expected result. |
| Docstring Coverage | ✅ Passed | No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0… |
| Linked Issues check | ✅ Passed | Check skipped because no linked issues were found for this pull request. |
| Out of Scope Changes check | ✅ Passed | Check skipped because no linked issues were found for this pull request. |
✨ Finishing Touches 💡 1
🛠️ Fix failing CI checks 💡
- Commit to this branch
- Create a new PR
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.
A rabbit checks the workflow trail
OTP hops on a newer rail
Rebar3 pins are set aside
Elixir keeps its steady stride
Green checks follow, ears held high
Comment @coderabbitai help to get the list of available commands.
Both Elixir workflows fail in the setup step because `erlef/setup-beam` runs
`mix local.rebar --force`, which fetches its metadata from builds.hex.pm, and
the Erlang/OTP build they pin (27.2.1, erts-15.2.1) rejects that host's current
Let's Encrypt chain:
{:tls_alert, {:unsupported_certificate, {key_usage_mismatch, ...}}}
Could not install Rebar because Mix could not download metadata at
https://builds.hex.pm/installs/rebar3-1.x.csv.
This is not a rate limit, a proxy problem or a flake. The identical error
appears in every failed run from 2026-06-22 onward — always in 4-7s, always
before any dependency work — including runs from BEFORE the rebar3 pin existed,
so that pin neither caused nor could fix it.
It is OTP-build-specific. chimichanga runs the same action pin against the same
host on Erlang/OTP 27.3.4.17 (erts-15.2.7.13) and the identical step succeeds
today. OTP corrected this certificate validation in a later 27.x patch; bofig
is pinned to an older one.
- otp-version: '27.2.1' -> '27.3.4.17' in both workflows (the build proven
working against this host today)
- drop `rebar3-version`, which cannot do what it was added for: setup-beam runs
`mix local.rebar` BEFORE it considers that input, gated only by `install-rebar`
(default true), so the pin never bypassed the cert error. Leaving it in only
adds an unauthenticated api.github.com lookup with nothing to show for it.
No dependency here is rebar-based and mix.exs declares no rebar manager.
4f8cec0 to
361dcbe
Compare
Why
Both Elixir workflows pass
rebar3-version: '3.24.0'toerlef/setup-beam. From the action's source, that input is the only thing that makes it callapi.github.com(three pages oferlang/rebar3releases) and download a binary from GitHub releases — with no input, that code path never runs. The action leaves those calls unauthenticated, which is why the setup step has failed in 4–7 s on every run since the pin landed on 2026-06-24, never reaching dependency installation. This holds for both the reusable wrapper and the legacy local copy.Timeline (from the workflow's own run history)
Run testsSet up ElixirNothing here needs rebar3
mixinstalls the rebar it needs on demand. No dependency is rebar-based andmix.exsdeclares no rebar manager. Removing the input restores exactly the shape both workflows had while they were passing.The pin was a workaround for a builds.hex.pm TLS
key_usage_mismatch; that host's chain is clean today (verified 2026-09-18, valid to 2026-11-08), so the workaround is stale.Verified
actionlintclean on both files; YAML re-parsed.rebar3-versionoccurrence remains in.github/workflows/.Companion change
hyperpolymath/standardsnow accepts agithub-tokeninput for the reusable and warns when the pin is set without one (landed separately), so a consumer that genuinely needs the pin has a working path.Expectation after landing
Setup goes green and the pipeline advances — it may then stop at
Run tests, a separate pre-existing failure that this unblocks the visibility of.