Skip to content

ci: bump OTP 28.0 -> 28.5.0.2 to unblock Hex 2.5.0#205

Merged
mkreyman merged 1 commit into
masterfrom
ci-bump-otp-28.5
Jun 29, 2026
Merged

ci: bump OTP 28.0 -> 28.5.0.2 to unblock Hex 2.5.0#205
mkreyman merged 1 commit into
masterfrom
ci-bump-otp-28.5

Conversation

@mkreyman

Copy link
Copy Markdown
Owner

Problem

CI went all-red on every PR (and master's own 06-29 scheduled run) starting 2026-06-29. Root cause is a toolchain regression, not code: Hex 2.5.0 shipped that day and calls :re.import/2, which only exists on Erlang/OTP >= 28.1. CI pinned OTP 28.0, so mix deps.get crashes immediately:

** (MatchError) no match of right hand side value:
   {:error, {:hex, {{:shutdown, {:failed_to_start_child, Hex.State,
   {:undef, [{:re, :import, [...]}]}}}, ...}}}
   (hex 2.5.0) lib/hex.ex:5: Hex.start/0

06-27 and 06-28 were green on the same pins — only Hex changed under us. Elixir 1.19 also officially requires OTP 28.1+, so the 28.0 pin was already below its own floor.

Fix

Bump OTP_VERSION 28.0 → 28.5.0.2 (latest 28.x build available for the Ubuntu runner). Elixir stays at 1.19.5 (current 1.19, satisfies mix.exs ~> 1.18). The single env var flows into every job's setup-beam and the mix/PLT cache keys, so this also busts the stale OTP-28.0 caches.

Verification

This PR's own CI run is the verification — mix deps.get must now succeed and the full matrix go green. Once merged, PR #204 (KnowledgeLintWorker) rebases on top to clear its (identical, toolchain-induced) red.

Hex 2.5.0 (shipped 2026-06-29) calls :re.import/2, which only exists on
Erlang/OTP >= 28.1. CI pinned OTP 28.0, so the moment Hex 2.5.0 became the
latest, every job crashed at 'mix deps.get' with:

  (MatchError) ... {:undef, [{:re, :import, ...}]}

This took master's own scheduled run red (06-29) while 06-27/06-28 were green
-- a pure toolchain regression, no code change involved. Elixir 1.19 also
requires OTP 28.1+, so the 28.0 pin was already below its own floor.

Move OTP forward to 28.5.0.2 (latest 28.x build available for the runner).
Elixir stays at 1.19.5 (current 1.19; satisfies mix.exs ~> 1.18). The env var
flows into every job's setup-beam and into the mix/PLT cache keys, so the bump
also correctly busts the stale OTP-28.0 caches.
@mkreyman mkreyman merged commit cf08b46 into master Jun 29, 2026
9 checks passed
@mkreyman mkreyman deleted the ci-bump-otp-28.5 branch June 29, 2026 21:17
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