Skip to content

ci(release): install fpm for the release/package contract gate - #290

Merged
andrescera merged 1 commit into
mainfrom
fix/release-contracts-fpm
Aug 21, 2026
Merged

ci(release): install fpm for the release/package contract gate#290
andrescera merged 1 commit into
mainfrom
fix/release-contracts-fpm

Conversation

@andrescera

Copy link
Copy Markdown
Member

What

Adds the Install Ruby and FPM step (plus its gem cache) to the
release-package-contracts job in publish-release.yml, matching the step that
build-check.yml's test-be job already has.

Why

The release path has been broken since 2026-07-24 and nothing could show it.

Two of the contracts this job runs build a real .deb and inspect its payload:

Contract Landed
deb-reconciler-staging.test.sh (#194) 2026-07-24
deb-sourcemap-policy.test.sh (#288) 2026-08-15

The last successful release was v2026.7.2 on 2026-07-19 — five days before the
first of those arrived. The very next release dispatch
(run 32447963881)
died at the first gate:

FAIL: fpm not on PATH (required build dependency)

It stayed invisible because build-check.yml's test-be job runs the same
contract suite and does install fpm — so every PR was green. Only the release
workflow's own gate lacked it. A gate exercised solely at release time reports its
own breakage solely at release time.

Nothing was published by that failed run: publish-federation, build-debian-package,
build-ceraui-system, create-release and dispatch-apt-reindex all show skipped,
so there is no tag, no GitHub release, and no R2 write to reconcile.

How to verify

  • bun run test:release-package-contracts passes locally (fpm present) and is the
    suite that was failing on the runner.
  • The step and cache key are byte-identical to build-check.yml's, so the two jobs
    cannot drift apart again.
  • build-debian-package keeps its own fpm install — it runs later and independently;
    this does not remove or reroute it.
  • YAML parses; step order verified (fpm install precedes Run release/package contracts).

Risks

Low, and scoped to CI. Adds ~40 s of gem install to one release job, cached after the
first run. No source, no packaging logic, and no release semantics change — the job's
own contract assertions are untouched. publish-release.yml is a skip_workflows
entry in the root ci-local.manifest.yaml ("secrets/OIDC"), so no manifest leaf or
digest needs updating for this change.

The release path has been broken since 2026-07-24 and nobody could see it. Two
of the contracts this job runs BUILD a .deb and inspect its payload —
deb-reconciler-staging (#194, 07-24) and deb-sourcemap-policy (#288, 08-15) —
but the job never installed fpm, so the first release attempt after #194 died
at the first gate with "fpm not on PATH". The last successful release was
07-19, five days before that dependency arrived.

It stayed invisible because build-check.yml's test-be job runs the SAME
contract suite and DOES install fpm, so every PR was green; only the release
workflow's own gate lacked it. A gate that is exercised solely at release time
reports its own breakage solely at release time.

Same step and cache key as build-check.yml, so the two jobs cannot drift again.
build-debian-package keeps its own install — it runs later and independently.
@coderabbitai

coderabbitai Bot commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 768865ef-291f-4157-8f8e-69c5e6efed39

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@andrescera
andrescera merged commit 07f30cd into main Aug 21, 2026
13 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.

1 participant