From 0c0145f265117c07a76d0881df331e4f32410907 Mon Sep 17 00:00:00 2001 From: Golam Rashed Date: Thu, 5 Jun 2025 01:01:49 +1000 Subject: [PATCH] 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. --- action.sh | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/action.sh b/action.sh index f23fcd4..0220f5d 100644 --- a/action.sh +++ b/action.sh @@ -226,17 +226,22 @@ if [[ "$MY_MODE" == "delete" ]]; then exit_with_failure "Failed to get ID of the Hetzner Cloud Server!" fi - # Send a DELETE request to the Hetzner Cloud API to delete the server. - # https://docs.hetzner.cloud/#servers-delete-a-server - echo "Delete server..." - curl \ - -X DELETE \ - --fail-with-body \ - -H "Content-Type: application/json" \ - -H "Authorization: Bearer ${MY_HETZNER_TOKEN}" \ - "https://api.hetzner.cloud/v1/servers/$MY_HETZNER_SERVER_ID" \ - || exit_with_failure "Error deleting server!" - echo "Hetzner Cloud Server deleted successfully." +# Send DELETE requests to the Hetzner Cloud API until the server is deleted +# https://docs.hetzner.cloud/#servers-delete-a-server +while true; do + echo "Delete server..." + if curl \ + -X DELETE \ + --fail-with-body \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer ${MY_HETZNER_TOKEN}" \ + "https://api.hetzner.cloud/v1/servers/$MY_HETZNER_SERVER_ID"; then + echo "Server deleted successfully." + break + fi + echo "Failed to delete server. Retrying in 30 seconds..." + sleep 30 +done # List self-hosted runners for repository # https://docs.github.com/en/rest/actions/self-hosted-runners?apiVersion=2022-11-28#list-self-hosted-runners-for-a-repository