@@ -136,6 +136,10 @@ jobs:
136136 --query SecretString --output text)
137137 OSSRH_USERNAME=$(echo "$SECRET" | jq -r '.["maven-central-username"]')
138138 OSSRH_PASSWORD=$(echo "$SECRET" | jq -r '.["maven-central-password"]')
139+ if [ -z "$OSSRH_USERNAME" ] || [ "$OSSRH_USERNAME" = "null" ] || [ -z "$OSSRH_PASSWORD" ] || [ "$OSSRH_PASSWORD" = "null" ]; then
140+ echo "ERROR: Failed to extract Maven credentials from secret"
141+ exit 1
142+ fi
139143 echo "::add-mask::$OSSRH_USERNAME"
140144 echo "::add-mask::$OSSRH_PASSWORD"
141145 echo "OSSRH_USERNAME=$OSSRH_USERNAME" >> $GITHUB_ENV
@@ -147,6 +151,10 @@ jobs:
147151 --secret-id GPGPassword \
148152 --query SecretString --output text)
149153 GPG_PASSPHRASE=$(echo "$SECRET" | jq -r '.["GPG Password"]')
154+ if [ -z "$GPG_PASSPHRASE" ] || [ "$GPG_PASSPHRASE" = "null" ]; then
155+ echo "ERROR: Failed to extract GPG passphrase from secret"
156+ exit 1
157+ fi
150158 echo "::add-mask::$GPG_PASSPHRASE"
151159 echo "GPG_PASSPHRASE=$GPG_PASSPHRASE" >> $GITHUB_ENV
152160
@@ -157,14 +165,39 @@ jobs:
157165 --query SecretString --output text)
158166 echo "$SECRET" | jq -r '.PGP_SECRET_KEY' | tr ' ' '\n' | base64 -d | gpg --batch --import
159167 GPG_KEYNAME=$(gpg --list-secret-keys --keyid-format short 2>/dev/null | grep 'sec' | head -1 | sed 's/.*\///' | awk '{print $1}')
168+ if [ -z "$GPG_KEYNAME" ]; then
169+ echo "ERROR: Failed to determine GPG key ID after import"
170+ exit 1
171+ fi
160172 echo "GPG_KEYNAME=$GPG_KEYNAME" >> $GITHUB_ENV
161173
162- - name : Deploy to Maven Central (staging)
174+ - name : Deploy and release to Maven Central
175+ id : deploy
163176 run : |
164177 ./mvnw -s settings.xml \
165178 -Ddevelocity.storage.directory=$HOME/.develocity-root \
166179 -Dmaven.repo.local=$HOME/.m2/spring-data-valkey \
167180 deploy -DskipTests \
168181 -pl spring-data-valkey,spring-boot-starter-data-valkey \
169182 -Dmaven.deploy.skip=false \
183+ -DautoReleaseAfterClose=true \
170184 -U -B
185+
186+ - name : Drop staging repository on failure
187+ if : failure() && steps.deploy.outcome == 'failure'
188+ run : |
189+ echo "Deploy failed - attempting to drop staging repository..."
190+ AUTH_HEADER="Bearer $(echo -n "${OSSRH_USERNAME}:${OSSRH_PASSWORD}" | base64)"
191+ # Find any open repositories for our namespace
192+ REPOS=$(curl -s --header "Authorization: ${AUTH_HEADER}" \
193+ "https://ossrh-staging-api.central.sonatype.com/manual/search/repositories?profile_id=io.valkey.springframework&state=open")
194+ REPO_KEY=$(echo "$REPOS" | jq -r '.repositories[0].key // empty')
195+ if [ -n "$REPO_KEY" ]; then
196+ echo "Dropping repository: $REPO_KEY"
197+ curl --fail --request DELETE \
198+ --header "Authorization: ${AUTH_HEADER}" \
199+ "https://ossrh-staging-api.central.sonatype.com/manual/drop/repository/${REPO_KEY}"
200+ echo "Staging repository dropped - safe to retry"
201+ else
202+ echo "No open staging repository found - nothing to clean up"
203+ fi
0 commit comments