Skip to content

[ML] Publish overall PR-builds commit status via catalog-info (fix stuck merges) - #3129

Merged
edsavage merged 1 commit into
elastic:mainfrom
edsavage:fix/catalog-pr-builds-commit-status
Jul 28, 2026
Merged

[ML] Publish overall PR-builds commit status via catalog-info (fix stuck merges)#3129
edsavage merged 1 commit into
elastic:mainfrom
edsavage:fix/catalog-pr-builds-commit-status

Conversation

@edsavage

@edsavage edsavage commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

Summary

The required status check on main and the release branches is buildkite/ml-cpp-pr-builds — the single overall commit status produced by the pipeline's publish_commit_status provider setting. Auto-merge (including backport auto-merge) waits on it.

That setting was declared publish_commit_status: false (with publish_commit_status_per_step: true) in catalog-info.yaml. Because ml-cpp's Buildkite pipeline settings are managed by the Backstage sync, the sync periodically re-applies the declared values — so any fix made via the Buildkite API gets reverted, the required rollup stops being posted, and PRs/backports sit BLOCKED forever despite all builds being green.

This was hit today: backports #3125 (9.4) and #3126 (9.5) had passing builds, approvals, and armed auto-merge, but never merged because buildkite/ml-cpp-pr-builds was absent.

Fix

Declare the correct values in catalog-info.yaml (source of truth) for the PR-builds pipeline only:

-        publish_commit_status: false
-        publish_commit_status_per_step: true
+        publish_commit_status: true
+        publish_commit_status_per_step: false

with a comment explaining why it must stay true. The snapshot pipeline block is intentionally left unchanged (it doesn't gate PR merges).

Test plan

  • Merge to main; let the Backstage sync apply it.
  • Confirm the ml-cpp-pr-builds pipeline shows publish_commit_status: true, publish_commit_status_per_step: false (Buildkite API GET /pipelines/ml-cpp-pr-builds).
  • Open/rebuild a PR and confirm a single buildkite/ml-cpp-pr-builds status posts (no per-step flood) and resolves the required check.

Unblocks the auto-backport-and-merge flow (#3122/#3128); complements the required-check config on the release branches.

…alog-info

The ml-cpp-pr-builds required status check 'buildkite/ml-cpp-pr-builds' is
produced by the pipeline's publish_commit_status setting. It was declared
false (with publish_commit_status_per_step true) in catalog-info.yaml, so the
Backstage sync kept resetting the pipeline to that — the required rollup was
never posted and PRs/backports stayed BLOCKED despite green builds (seen on
the elastic#3115 backports elastic#3125/elastic#3126). Pipeline settings must be changed here, not
via the Buildkite API (the sync overwrites API changes).

Set publish_commit_status: true and publish_commit_status_per_step: false so
the single required rollup posts and per-step statuses don't flood PRs.

Co-authored-by: Cursor <[email protected]>
@elasticsearchmachine

Copy link
Copy Markdown

Pinging @elastic/ml-core (Team:ML)

@edsavage
edsavage merged commit b6a7961 into elastic:main Jul 28, 2026
14 of 30 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants