Skip to content

Commit 07d0333

Browse files
committed
Handle failure conditions
Signed-off-by: Jeremy Parr-Pearson <jeremy.parr-pearson@improving.com>
1 parent 97c7e18 commit 07d0333

1 file changed

Lines changed: 34 additions & 1 deletion

File tree

.github/workflows/release.yml

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)