fix(ci): repair release workflows that silently skipped or never ran - #174
Open
adityamparikh wants to merge 1 commit into
Open
fix(ci): repair release workflows that silently skipped or never ran#174adityamparikh wants to merge 1 commit into
adityamparikh wants to merge 1 commit into
Conversation
Verified findings from a CodeRabbit review, rebased onto current main. Jobs that never run: - release-publish.yml: publish-mcp-registry gates on needs.validate-release.outputs.proceed but does not list validate-release in needs:. A needs.<job> reference to a job absent from needs: resolves to empty rather than erroring, so the condition is always falsy and MCP Registry publishing never happens. - atr-release.yml / atr-release-test.yml: finish-release has no needs: at all, only `if: always() && inputs.skip_vote`, so it announces the release in parallel with the jobs that produce it. Steps that fail outright: - atr-release.yml uses actions/upload-artifact@v3, retired by GitHub. Pinned to the SHA already used elsewhere in this repo. - The MCP Publisher download 404s today: the asset is mcp-publisher_linux_amd64.tar.gz, not mcp-publisher-linux-amd64.tar.gz. Because `curl -L` has no --fail and is piped straight into tar, the error page is streamed to tar instead of failing the step. Pinned to v1.8.0 and verified against the release's published checksum. Other correctness and hardening: - apache/tooling-actions upload-to-atr / release-on-atr were referenced at @main; pinned to a commit SHA. ASF's Actions allow-list matches by exact SHA, and a mutable ref is not reproducible. - Pass workflow_dispatch inputs through step env instead of interpolating them into shell text. - The Docker Hub publish step warned and exited 0 when credentials were absent, so a release could report success while publishing nothing; it now fails. Credentials move to JIB_TO_AUTH_* env so the token is not in the process argument list. - The build.gradle.kts version sed was unanchored; restrict it to the top-level `version = ` declaration. - Drop an unresolved ${VOTE_THREAD_NOTE} from the announcement heredoc; the vote thread URL is already appended by the block below it. - The release step rewrote only .packages[0].version in server.json, leaving the second package on -SNAPSHOT so the registry entry advertised an image tag that is never published. Rewrite every package and fail if a SNAPSHOT survives. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Signed-off-by: Aditya Parikh <aditya.m.parikh@gmail.com>
This was referenced Aug 2, 2026
Closed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Findings from a CodeRabbit review of the release workflows. Every item below was verified against the file on current
mainbefore being changed.Jobs that never run
release-publish.yml:518—publish-mcp-registrygates onneeds.validate-release.outputs.proceed, butvalidate-releaseis not listed inneeds::A
needs.<job>reference to a job absent fromneeds:resolves to empty rather than erroring, so the condition is always falsy. MCP Registry publishing has never run.atr-release.yml:338/atr-release-test.yml—finish-releasehas noneeds:at all, onlyif: always() && inputs.skip_vote, so it announces the release in parallel with the jobs that produce it.Steps that fail outright
atr-release.yml:249,332—actions/upload-artifact@v3was retired by GitHub.release-publish.yml:555— the MCP Publisher download 404s today. The published asset ismcp-publisher_linux_amd64.tar.gz, notmcp-publisher-linux-amd64.tar.gz:Because
curl -Lhas no--failand is piped straight intotar, GitHub's HTML error page is streamed totarrather than failing the step cleanly. Now pinned tov1.8.0and verified against the release's published checksum before extraction.Other correctness and hardening
apache/tooling-actions/{upload-to-atr,release-on-atr}were referenced at@main. Pinned to a commit SHA — ASF's Actions allow-list matches by exact SHA, and a mutable ref is not reproducible.workflow_dispatchinputs now pass through stepenvinstead of being interpolated into shell text.JIB_TO_AUTH_*env so the token is not in the process argument list.build.gradle.ktsversionsedwas unanchored; restricted to the top-levelversion =declaration.${VOTE_THREAD_NOTE}from the announcement heredoc — the vote thread URL is already appended by the block below it.server.json: the release step rewrote only.packages[0].version, leaving the second package on-SNAPSHOT, so the registry entry advertised an image tag that is never published. Now rewrites every package and fails if aSNAPSHOTsurvives.Notes
Rebased onto current
main, so it accounts for #153 (GHCR/Docker publishing dropped frombuild-and-publish.yml) and #155 (nightly-build.ymlremoved) — fixes for that now-deleted code are deliberately excluded. The inlinedocker loginfrom #154 is preserved unchanged.All modified YAML and
server.jsonparse cleanly.🤖 Generated with Claude Code