From a17882beff8f61d8c20cc67c6287004a4122556a Mon Sep 17 00:00:00 2001 From: Russell Spitzer Date: Mon, 14 Sep 2026 16:37:56 -0500 Subject: [PATCH] Prepare RC: use the repositories API to verify staged artifacts nexus_check_staging_artifact built URLs under /content/repositories//, which does not serve open staging repositories. The check therefore failed for every RC: prepare-rc.sh runs it before closing, so the repo is always open at that point. 1.19.0-rc8 aborted this way even though the staging repo was correct and complete. Confirmed by probing repository.apache.org: /content/repositories//... returned 404 anonymously, with a committer user token, and with the deployer service account, while /service/local/repositories//content/... returned 200. Closing the repo by hand flipped /content/repositories/ to 200, confirming it only serves closed repos. Switch to the repositories API, which serves a staging repo in both states. That matters because this function has call sites on both sides of the close: prepare-rc.sh checks pre-close (open), while cancel-rc.sh and publish-release.sh reach it via nexus_verify_staging_repo post-close (closed). Neither of those had run against real Nexus, so both carried the same latent failure. Verified against a live staging repo in both states, and end-to-end by running cancel-rc.sh against a closed repo, which also exercised nexus_get_staging_repo_metadata and nexus_drop_staging_repo for the first time. Co-Authored-By: Claude Opus 5 (1M context) --- release/libs/_constants.sh | 2 +- release/libs/_nexus.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/release/libs/_constants.sh b/release/libs/_constants.sh index 409d5da07f..78c3978f26 100644 --- a/release/libs/_constants.sh +++ b/release/libs/_constants.sh @@ -29,7 +29,7 @@ APACHE_DIST_DEV_PATH="/dev/parquet" APACHE_DIST_RELEASE_PATH="/release/parquet" NEXUS_BASE_URL=${NEXUS_BASE_URL:-"https://repository.apache.org/service/local"} -NEXUS_CONTENT_BASE_URL=${NEXUS_CONTENT_BASE_URL:-"https://repository.apache.org/content/repositories"} +NEXUS_CONTENT_BASE_URL=${NEXUS_CONTENT_BASE_URL:-"${NEXUS_BASE_URL}/repositories"} NEXUS_STAGING_GROUP_URL="https://repository.apache.org/content/groups/staging/org/apache/parquet/" NEXUS_PROFILE_NAME="org.apache.parquet" diff --git a/release/libs/_nexus.sh b/release/libs/_nexus.sh index 1dd3f1c4e7..d56adff7d4 100644 --- a/release/libs/_nexus.sh +++ b/release/libs/_nexus.sh @@ -108,7 +108,7 @@ function nexus_get_staging_repo_metadata { function nexus_check_staging_artifact { local repo_id="$1" local version="$2" - local artifact_url="${NEXUS_CONTENT_BASE_URL}/${repo_id}/${NEXUS_VERIFY_GROUP_PATH}/${NEXUS_VERIFY_ARTIFACT_ID}/${version}/${NEXUS_VERIFY_ARTIFACT_ID}-${version}.pom" + local artifact_url="${NEXUS_CONTENT_BASE_URL}/${repo_id}/content/${NEXUS_VERIFY_GROUP_PATH}/${NEXUS_VERIFY_ARTIFACT_ID}/${version}/${NEXUS_VERIFY_ARTIFACT_ID}-${version}.pom" if [[ ${DRY_RUN:-1} -eq 1 ]]; then print_command "Dry-run, WOULD HEAD ${artifact_url}"