ci: fix skipped release publication jobs - #841
Conversation
There was a problem hiding this comment.
Pull request overview
This PR fixes the CI “publish gate” in .github/workflows/create-releases.yml by materializing the release-source decision as explicit step outputs (strings) and validating release metadata when publishing is enabled, so downstream jobs reliably receive should_publish == 'true' when appropriate.
Changes:
- Replaces expression-based job outputs in the
releasefan-in job with step-backed outputs written to$GITHUB_OUTPUT. - Adds a bash selection/validation step that chooses the release source (retry vs automatic) and fails fast on malformed
source_sha/release_tagwhen publication is enabled.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
HAYDEN-OAI
left a comment
There was a problem hiding this comment.
Reviewed the complete exact-head workflow, all commits and prior discussion, both previously green-but-skipped production release runs, the pinned release-please output contract, reusable runtime gating, exact-source Maven publication invariants, protected secrets/permissions, cancellation, and retry/recovery behavior. The explicit !cancelled() checks correctly avoid skipped-dependency propagation without keeping cancelled runs alive; selected SHA/tag outputs are validated and consistently propagated, and the final outcome fails closed on unexpected skips or failures. No substantive correctness, security, compatibility, or recovery issues found.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: f02441aa2a
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
What changed
Root cause
PR #836 split automatic releases and manual retries into mutually exclusive jobs. Exactly one source job is therefore intentionally skipped on every run.
GitHub applies an implicit
success()status check to a job-levelifthat does not contain a status-check function. A skipped job propagates through the dependency chain, so the downstream runtime and publication jobs were skipped even though the fan-in source-selection job succeeded and selected v4.50.0. GitHub reports skipped jobs as successful, which left both the automatic run and guarded retry green.The earlier output-only diagnosis was incomplete. Step-backed outputs remain useful for validation and observability, but the scheduler-safe
!cancelled()conditions are the root fix.Validation
git diff --checkyq./gradlew publish -PpublishLocal --no-configuration-cachesucceeded4.50.0coordinates and ran on Java 213c9440d1f5dd6917379d6912155b3b3e8d82c767: core tests passed under GraalVM 21's native-image agent and generated six non-empty metadata filesThe only intentionally untested operation on the PR is the credentialed Central Portal upload. After merge, the guarded v4.50.0 retry remains the production end-to-end confirmation; the workflow now cannot finish green if that publication path is skipped.