Skip to content

Publish Maven Central releases through the Publisher Portal API - #668

Merged
rapids-bot[bot] merged 4 commits into
mainfrom
ramakrishnap-nv/maven-publish-portal-api
Oct 27, 2026
Merged

rapids-bot[bot] merged 4 commits into
mainfrom
ramakrishnap-nv/maven-publish-portal-api

Conversation

@paul-aiyedun

Copy link
Copy Markdown
Contributor

Sonatype asked projects to move from the legacy ossrh-staging-api to the Publisher API. This changes the Maven Central release path.

  • The signed bundle zip is uploaded with one POST /api/v1/publisher/upload as a USER_MANAGED deployment, then polled until VALIDATED. Publishing is still a manual step in the Portal UI.
  • The per-file staging upload, handoff and open-repository checks are removed.
  • The profile-id input and option from Decouple OSSRH staging profile from Maven groupId #652 are removed, since the Publisher API has no staging profile. cuOpt was the only caller using it.
  • The Maven Central integration test is rewritten for the new flow. Its mock curl did not honor -o and -w, so it already failed on main.

The snapshot path already uses the Portal snapshot repository and is unchanged.

Tested with the integration test (upload, auto-drop on and off, upload failure, FAILED validation). Not yet run against the real Portal. This also changes cudf's release path, so it should be exercised on a real release before merging.

Mirrors NVIDIA/cuopt#2195, which carries the same change in its vendored copy of this workflow.

🤖 Generated with Claude Code

The release path uploaded files one by one through the legacy
ossrh-staging-api compatibility service and then handed the staging
repository to the Portal. Sonatype asked projects to move to the
Publisher API.

Upload the signed bundle zip with POST /api/v1/publisher/upload as a
USER_MANAGED deployment, then poll status as before. Publishing is still
a manual step in the Portal UI.

The staging profile id has no meaning in the Publisher API, so drop the
profile-id input and option added in #652.

Rewrite the Maven Central integration test around the new flow. Its mock
curl did not honor -o and -w, so the test already failed on main.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Signed-off-by: Ramakrishna Prabhu <ramakrishnap@nvidia.com>
@paul-aiyedun

Copy link
Copy Markdown
Contributor Author

Copy of #665

@paul-aiyedun paul-aiyedun added improvement Improves an existing functionality non-breaking Introduces a non-breaking change labels Oct 26, 2026

@paul-aiyedun paul-aiyedun left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ramakrishnap-nv Changes look good to me. Can you please do an end-to-end using NVIDIA/cuopt#2195?

@ramakrishnap-nv

Copy link
Copy Markdown
Contributor

Could we temporarily push this to maven-publish.yaml, so we can exercise the Publisher API from a cuOpt PR run (no tag needed)? It will be reverted afterwards.

In "Determine publish destination", force the Central path:

-          if rapids-is-release-build; then
+          if true; then # TEMP: remove before merge

cuOpt would call it with stage-for-maven-central-publish: false, so the deployment is validated and then dropped, and nothing is published.

- name: Determine publish destination
id: destination
run: |
if rapids-is-release-build; then

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
# if rapids-is-release-build; then
if true; then

To test the workflow without create release build.

@ramakrishnap-nv

Copy link
Copy Markdown
Contributor

End-to-end test with the temporary commit (42dc26b) completed successfully: https://github.com/NVIDIA/cuopt/actions/runs/40539658926/job/122331223114

The signed bundle was uploaded to the Portal, reached VALIDATED, and was dropped (stage-for-maven-central-publish: false). Nothing was published. The temporary commit can be reverted.

@paul-aiyedun paul-aiyedun left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changes look good to me.

@paul-aiyedun
paul-aiyedun marked this pull request as ready for review October 27, 2026 18:13
@paul-aiyedun
paul-aiyedun requested a review from a team as a code owner October 27, 2026 18:13
@paul-aiyedun
paul-aiyedun requested review from bdice and removed request for a team October 27, 2026 18:14
@paul-aiyedun

Copy link
Copy Markdown
Contributor Author

/merge

@rapids-bot
rapids-bot Bot merged commit e4270c6 into main Oct 27, 2026
2 checks passed
ramakrishnap-nv added a commit to NVIDIA/cuopt that referenced this pull request Oct 27, 2026
#2195)

Drops the vendored `maven-publish` workflow and scripts and calls the
shared workflow from `rapidsai/shared-workflows@main`, which now
publishes through the Central Publisher Portal API
(rapidsai/shared-workflows#668). The legacy `ossrh-staging-api` is being
retired. Also removes the `profile-id` input.

Testing: ran the shared workflow (#668 plus a temporary forced-release
commit) from a PR build against the real Portal. It reached `VALIDATED`
and was dropped, nothing published:
https://github.com/NVIDIA/cuopt/actions/runs/40539658926. Temp changes
reverted. Tag-triggered publish not exercised.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Signed-off-by: Ramakrishna Prabhu <ramakrishnap@nvidia.com>
Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

improvement Improves an existing functionality non-breaking Introduces a non-breaking change

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants