Skip to content

Release: complete the Nexus secret rename and harden cancel/publish - #3814

Merged
Fokko merged 1 commit into
apache:masterfrom
RussellSpitzer:fix/cancel-rc-parity
Sep 23, 2026
Merged

Fokko merged 1 commit into
apache:masterfrom
RussellSpitzer:fix/cancel-rc-parity

Conversation

@RussellSpitzer

Copy link
Copy Markdown
Member

Rationale for this change

While we fixed the URLs for Nexus checking in the prepare script, we did not also fix it in the Cancel and publish script.

What changes are included in this PR?

Urls are fixed and a safeguard is included to make sure that if our required secrets are not set, we fail fast. Also do the same Tag reordering thing we also fixed in prepare which moves the GitHub tagging to the end so that a failed publish doesn't leave behind a git tag.

Are these changes tested?

Local Bats runs.

Are there any user-facing changes?

No

The 2026-09-16 Cancel RC run for 1.19.0 rc9 failed with HTTP 401 because
release-cancel-rc.yml still read secrets.PARQUET_NEXUS_USER /
PARQUET_NEXUS_PASSWORD, which do not exist on apache/parquet-java. apache#3776
moved prepare-rc and publish to the ASF org-shared
NEXUS_STAGE_DEPLOYER_USER / NEXUS_STAGE_DEPLOYER_PW but missed cancel-rc,
the last two references in the tree. Nothing was cancelled: verification
is step 0, so the run aborted before dropping the staging repo or deleting
the SVN artifacts.

An absent secret expands to the empty string rather than failing, so the
credentials were present-but-blank and the first authenticated curl
reported only "error: 401". Add require_env and call it from all three
release scripts when DRY_RUN is not 1, so a missing credential is named
before any network call. Dry runs stay usable without secrets because
every authenticated call is already gated on DRY_RUN. _maven.sh had this
check for the deploy path only, which is why prepare-rc's Nexus 401 was
equally opaque.

Also apply apache#3787's tag-push ordering to publish-release.sh. It pushed the
final tag in step 3 and released the staging repo in step 4, so a Nexus
failure left a published release tag and the "Final release tag already
exists" guard then blocked the retry -- the same trap apache#3787 removed from
prepare-rc, where eight orphaned 1.19.0 RC tags accumulated. Keep git tag
-a in step 3 for the local reads that follow and move only the push to
step 5, immediately before the GitHub release that needs it on the remote.

Generated-by: Claude Opus 5 (1M context)
DRY_RUN: ${{ inputs.dry_run && '1' || '0' }}
NEXUS_USERNAME: ${{ secrets.PARQUET_NEXUS_USER }}
NEXUS_PASSWORD: ${{ secrets.PARQUET_NEXUS_PASSWORD }}
NEXUS_USERNAME: ${{ secrets.NEXUS_STAGE_DEPLOYER_USER }}

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.

@Fokko
Fokko merged commit d2a165e into apache:master Sep 23, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants