Skip to content

Commit 4146fa5

Browse files
retry SDK install
1 parent ab2860b commit 4146fa5

File tree

1 file changed

+41
-15
lines changed

1 file changed

+41
-15
lines changed

.github/workflows/scripts/install-and-build-with-sdk.sh

Lines changed: 41 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@ CURL_MAX_RETRIES=5
2222
CURL_RETRY_DELAY=5
2323
CURL_TIMEOUT=300
2424

25+
SDK_INSTALL_MAX_RETRIES=5
26+
SDK_INSTALL_INITIAL_RETRY_DELAY=10
27+
2528
curl_with_retry() {
2629
local attempt=1
2730
local exit_code=0
@@ -47,6 +50,41 @@ curl_with_retry() {
4750
return $exit_code
4851
}
4952

53+
swift_sdk_install_with_retry() {
54+
local swift_executable="$1"
55+
local sdk_url="$2"
56+
local checksum="$3"
57+
local sdk_type="$4"
58+
59+
local attempt=1
60+
local retry_delay=$SDK_INSTALL_INITIAL_RETRY_DELAY
61+
62+
while [ $attempt -le $SDK_INSTALL_MAX_RETRIES ]; do
63+
if [ $attempt -gt 1 ]; then
64+
log "Retry attempt $attempt of $SDK_INSTALL_MAX_RETRIES for ${sdk_type} SDK installation after ${retry_delay}s delay..."
65+
sleep $retry_delay
66+
fi
67+
68+
log "Attempt $attempt: Installing ${sdk_type} SDK from ${sdk_url}"
69+
70+
if "$swift_executable" sdk install "$sdk_url" --checksum "$checksum"; then
71+
log "${sdk_type} SDK installed successfully"
72+
return 0
73+
else
74+
local exit_code=$?
75+
log "swift sdk install failed with exit code $exit_code on attempt $attempt"
76+
77+
# Exponential backoff: double the delay each time
78+
retry_delay=$((retry_delay * 2))
79+
fi
80+
81+
attempt=$((attempt + 1))
82+
done
83+
84+
error "${sdk_type} SDK installation failed after $SDK_INSTALL_MAX_RETRIES attempts"
85+
return 1
86+
}
87+
5088
# Parse command line options
5189
INSTALL_ANDROID=false
5290
INSTALL_STATIC_LINUX=false
@@ -586,11 +624,7 @@ install_android_sdk() {
586624
local android_sdk_filename="${android_sdk_bundle_name}.tar.gz"
587625
local sdk_url="${ANDROID_SDK_DOWNLOAD_ROOT}/${ANDROID_SDK_TAG}/${android_sdk_filename}"
588626

589-
log "Running: ${SWIFT_EXECUTABLE_FOR_ANDROID_SDK} sdk install ${sdk_url} --checksum ${ANDROID_SDK_CHECKSUM}"
590-
591-
if "$SWIFT_EXECUTABLE_FOR_ANDROID_SDK" sdk install "$sdk_url" --checksum "$ANDROID_SDK_CHECKSUM"; then
592-
log "✅ Android Swift SDK installed successfully"
593-
else
627+
if ! swift_sdk_install_with_retry "$SWIFT_EXECUTABLE_FOR_ANDROID_SDK" "$sdk_url" "$ANDROID_SDK_CHECKSUM" "Android Swift"; then
594628
fatal "Failed to install Android Swift SDK"
595629
fi
596630

@@ -632,11 +666,7 @@ install_static_linux_sdk() {
632666
local static_linux_sdk_filename="${STATIC_LINUX_SDK_TAG}_static-linux-0.0.1.artifactbundle.tar.gz"
633667
local sdk_url="${STATIC_LINUX_SDK_DOWNLOAD_ROOT}/${STATIC_LINUX_SDK_TAG}/${static_linux_sdk_filename}"
634668

635-
log "Running: ${SWIFT_EXECUTABLE_FOR_STATIC_LINUX_SDK} sdk install ${sdk_url} --checksum ${STATIC_LINUX_SDK_CHECKSUM}"
636-
637-
if "$SWIFT_EXECUTABLE_FOR_STATIC_LINUX_SDK" sdk install "$sdk_url" --checksum "$STATIC_LINUX_SDK_CHECKSUM"; then
638-
log "✅ Static Linux Swift SDK installed successfully"
639-
else
669+
if ! swift_sdk_install_with_retry "$SWIFT_EXECUTABLE_FOR_STATIC_LINUX_SDK" "$sdk_url" "$STATIC_LINUX_SDK_CHECKSUM" "Static Linux Swift"; then
640670
fatal "Failed to install Static Linux Swift SDK"
641671
fi
642672

@@ -655,11 +685,7 @@ install_wasm_sdk() {
655685
local wasm_sdk_filename="${WASM_SDK_TAG}_wasm.artifactbundle.tar.gz"
656686
local sdk_url="${WASM_SDK_DOWNLOAD_ROOT}/${WASM_SDK_TAG}/${wasm_sdk_filename}"
657687

658-
log "Running: ${SWIFT_EXECUTABLE_FOR_WASM_SDK} sdk install ${sdk_url} --checksum ${WASM_SDK_CHECKSUM}"
659-
660-
if "$SWIFT_EXECUTABLE_FOR_WASM_SDK" sdk install "$sdk_url" --checksum "$WASM_SDK_CHECKSUM"; then
661-
log "✅ Swift SDK for Wasm installed successfully"
662-
else
688+
if ! swift_sdk_install_with_retry "$SWIFT_EXECUTABLE_FOR_WASM_SDK" "$sdk_url" "$WASM_SDK_CHECKSUM" "Swift Wasm"; then
663689
fatal "Failed to install Swift SDK for Wasm"
664690
fi
665691

0 commit comments

Comments
 (0)