Ensure deployment visibility in the Central Publisher Portal Since the OSSRH is now EOL [1], the Gerrit maven deployment has been adapted to usethe OSSRH staging API compatibility API (I6e7454a2be440). As per documentation [2], once an artifact has been uploaded to the OSSRH Staging API, it needs to be explicitly deployed to the main Central Publisher Portal. This is done by making a request to POST /manual/upload/defaultRepository/com.google.gerrit Modify the gerrit-release.sh script to execute this additional step. [1] https://central.sonatype.org/pages/ossrh-eol/ [2] https://central.sonatype.org/publish/publish-portal-ossrh-staging-api/#configuring-the-repository Change-Id: I1e55008bf8d03b14cc83bad4e859a111e2439c74
diff --git a/jenkins-docker/agent-release/gerrit-release.sh b/jenkins-docker/agent-release/gerrit-release.sh index fae9f34..60feff5 100755 --- a/jenkins-docker/agent-release/gerrit-release.sh +++ b/jenkins-docker/agent-release/gerrit-release.sh
@@ -20,6 +20,9 @@ export nextversion=$3 export migrationversion=$4 +MAVEN_REPOSITORY="OSSRH-staging" +MAVEN_SETTINGS_FILE="$HOME/.m2/settings.xml" + bazel_config="" if [ "$branch" == "stable-3.11" ]; then bazel_config="--config=java21" @@ -90,6 +93,28 @@ ./tools/maven/api.sh war_deploy $bazel_config ./tools/maven/api.sh deploy $bazel_config +echo "Extracting OSSRH credentials..." +ossrh_user=$(grep -A2 "<id>$MAVEN_REPOSITORY</id>" $MAVEN_SETTINGS_FILE | grep '<username>' | sed -E 's|.*<username>(.*)</username>.*|\1|') +ossrh_pass=$(grep -A2 "<id>$MAVEN_REPOSITORY</id>" $MAVEN_SETTINGS_FILE | grep '<password>' | sed -E 's|.*<password>(.*)</password>.*|\1|') + +if [ -z "$ossrh_user" ] || [ -z "$ossrh_pass" ]; then + echo "Failed to extract credentials from $MAVEN_SETTINGS_FILE" + exit 3 +fi + +bearer_token=$(echo -n "$ossrh_user:$ossrh_pass" | base64) + +# Manually upload to Maven Central +# https://central.sonatype.org/publish/publish-portal-ossrh-staging-api/#post-to-manualuploaddefaultrepositorynamespace +curl -X POST \ + 'https://ossrh-staging-api.central.sonatype.com/manual/upload/defaultRepository/com.google.gerrit' \ + -H 'accept: */*' \ + -H "Authorization: Bearer $bearer_token" \ + -d "''" || { + echo "manual upload endpoint failed. Aborting release." + exit 4 + } + echo "Download the artifacts from SonaType staging repository at https://oss.sonatype.org" echo "logging in using your credentials"