Skip to content

Restore the weekly image rebuild - #8

Merged
rmachielse merged 1 commit into
mainfrom
feature/swe-510-fix-the-broken-ruby-jemalloc-rebuild-pipeline
Aug 24, 2026
Merged

Restore the weekly image rebuild#8
rmachielse merged 1 commit into
mainfrom
feature/swe-510-fix-the-broken-ruby-jemalloc-rebuild-pipeline

Conversation

@rmachielse

@rmachielse rmachielse commented Aug 21, 2026

Copy link
Copy Markdown

Summary

Restores Build-Test-Push, which has failed every run since 2026-07-13 — six consecutive weekly schedules plus every push and PR. The pinned v1.2.3 of ruby-versions-action pulls ruby-version-checker unpinned, and that binary now requires a subcommand (check or docker). Invoked with the old positional arguments it prints its usage text and exits, so versions and metadata come back empty, the matrix expands to nothing, build-test-push never runs and merge-manifests is skipped.

Consequences of the outage: ghcr.io/feedbackfruits/ruby-jemalloc:3.4.10-slim is still the 2026-07-09 build over a Debian rootfs from 2026-06-23, and every downstream service inherits it. Trivy reports 90 fixable HIGH findings on it, 73 of them linux-libc-dev kernel headers and the rest small and real — libexpat1, curl, util-linux. No Ruby release published since then reached the registry either, so downstream repos cannot adopt one.

Pinning to v2.0.0 restores version discovery. A run on this branch built the full matrix green, including Ruby 4.0.6 on both architectures, which has never been through this pipeline before.

Alternatives considered

v1.2.4 is the only release that digest-pins the checker, and it was the first choice for that reason. Its frozen checker turns out to be frozen in its version list too: it reports 3.1.7 through 3.4.10, so Ruby 4.0 would never reach the registry and EOL 3.1 would keep being built and published. A run on this branch confirmed both the fix and that list. v2.0.0 reports 3.2 through 4.0.6, matching what upstream builds green each week.

v2.0.0 pulls the checker as :latest, so this class of break can recur, and nothing here would announce it. That is a real gap and it is accepted deliberately rather than solved: the six-week outage happened because a failing schedule told nobody, and fixing that needs a channel decision — Slack, matching the API repo's deploy notifications, would need a SLACK_WEBHOOK_URL secret this repository does not have. Tracked in SWE-510.

Syncing the fork wholesale would bring upstream's floating @v2 reference along with floating tags throughout, which the zizmor high/high gate rejects, and three Ubuntu variants for tags nothing consumes. Upstream also still omits the jemalloc LD_PRELOAD and MALLOC_CONF settings added here in #1, so their images cannot replace ours.

Worth noting for the pinning policy: neither zizmor nor pinact can catch this class of failure. They verify the ref we write, while the break came from a Dockerfile inside the action. A SHA-pinned action is only as pinned as its own base images.

Follow-up

Failure visibility and a reporting-only Trivy scan here, where a finding is actionable because republishing is the fix, are tracked in SWE-510.

Fixes SWE-510

@rmachielse rmachielse closed this Aug 21, 2026
@rmachielse
rmachielse force-pushed the feature/swe-510-fix-the-broken-ruby-jemalloc-rebuild-pipeline branch from 6a989e3 to ab42715 Compare August 21, 2026 09:07
Build-Test-Push has failed every run since 2026-07-13, so the last
published image is the 2026-07-09 build and no Ruby release has
reached the registry since. The pinned v1.2.3 pulls
ruby-version-checker unpinned, and that binary now requires a
subcommand, so the action prints its usage text and returns empty
versions and metadata. The matrix expands to nothing, build-test-push
never runs, and merge-manifests is skipped.

v1.2.4 was the conservative choice, but its digest-pinned checker
predates Ruby 4.0 and still lists EOL 3.1. v2.0.0 reports 3.2 through
4.0 and is what upstream runs green weekly. It pulls the checker as
:latest, so the same class of break can recur, which is survivable
only if a failing scheduled run is noticed.

SWE-510
@rmachielse rmachielse changed the title Pin ruby-versions-action to v1.2.4 to restore the build Restore the weekly image rebuild and alarm on failure Aug 21, 2026
@rmachielse rmachielse reopened this Aug 21, 2026
@rmachielse
rmachielse force-pushed the feature/swe-510-fix-the-broken-ruby-jemalloc-rebuild-pipeline branch 2 times, most recently from a8d62b9 to 8a4e4b3 Compare August 21, 2026 09:14
@rmachielse rmachielse changed the title Restore the weekly image rebuild and alarm on failure Restore the weekly image rebuild Aug 21, 2026
@rmachielse
rmachielse requested a review from lhoBas August 21, 2026 09:15
@rmachielse
rmachielse merged commit bdb5625 into main Aug 24, 2026
32 checks passed
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.

2 participants