Skip to content

Commit 0c0145f

Browse files
committed
Add retry logic for Hetzner server deletion
Enhance server deletion reliability by implementing a retry loop that continues attempting to delete the server if initial requests fail. This helps handle transient API failures and ensures cleanup completion.
1 parent 62495bf commit 0c0145f

File tree

1 file changed

+16
-11
lines changed

1 file changed

+16
-11
lines changed

action.sh

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -226,17 +226,22 @@ if [[ "$MY_MODE" == "delete" ]]; then
226226
exit_with_failure "Failed to get ID of the Hetzner Cloud Server!"
227227
fi
228228

229-
# Send a DELETE request to the Hetzner Cloud API to delete the server.
230-
# https://docs.hetzner.cloud/#servers-delete-a-server
231-
echo "Delete server..."
232-
curl \
233-
-X DELETE \
234-
--fail-with-body \
235-
-H "Content-Type: application/json" \
236-
-H "Authorization: Bearer ${MY_HETZNER_TOKEN}" \
237-
"https://api.hetzner.cloud/v1/servers/$MY_HETZNER_SERVER_ID" \
238-
|| exit_with_failure "Error deleting server!"
239-
echo "Hetzner Cloud Server deleted successfully."
229+
# Send DELETE requests to the Hetzner Cloud API until the server is deleted
230+
# https://docs.hetzner.cloud/#servers-delete-a-server
231+
while true; do
232+
echo "Delete server..."
233+
if curl \
234+
-X DELETE \
235+
--fail-with-body \
236+
-H "Content-Type: application/json" \
237+
-H "Authorization: Bearer ${MY_HETZNER_TOKEN}" \
238+
"https://api.hetzner.cloud/v1/servers/$MY_HETZNER_SERVER_ID"; then
239+
echo "Server deleted successfully."
240+
break
241+
fi
242+
echo "Failed to delete server. Retrying in 30 seconds..."
243+
sleep 30
244+
done
240245

241246
# List self-hosted runners for repository
242247
# https://docs.github.com/en/rest/actions/self-hosted-runners?apiVersion=2022-11-28#list-self-hosted-runners-for-a-repository

0 commit comments

Comments
 (0)