1
0
mirror of https://github.com/PDP-10/its.git synced 2026-01-28 12:59:20 +00:00

Update deploy-ftp.sh

Adding retry logic for creatin the tar ball to ensure what we upload is valid.
Looping back to creating the tar ball instead of looping on the download.
This commit is contained in:
Mike Kostersitz (Oilcan Productions)
2024-08-23 14:18:23 -07:00
committed by Lars Brinkhoff
parent 63b10e09ca
commit fa5fd06bd9

View File

@@ -18,12 +18,44 @@ echo "login $USER" >> "$NETRC"
echo "password $FTP_SECRET" >> "$NETRC"
chmod 600 "$NETRC"
upload_file(){
(cd out; tar czf $EMULATOR.tgz $EMULATOR)
# create_archive will create a tar ball from the out folder
# try to extract it to see if it is valid
# retry 3 times then fail
create_archive() {
MAX_RETRIES=3
RETRY_COUNT=0
echo "Deploying as $USER at $HOST"
while [ "$RETRY_COUNT" -lt "$MAX_RETRIES" ]; do
(cd out; tar czf $EMULATOR.tgz $EMULATOR)
ftp "$HOST" <<EOF
# Verify the tarball
if tar tf $EMULATOR.tgz >/dev/null 2>&1; then
echo "Tarball is valid and can be expanded."
break
else
echo "Tarball is not valid or cannot be expanded. Retrying..."
RETRY_COUNT=`expr "$RETRY_COUNT" + 1`
rm -f $EMULATOR.tgz
continue
fi
done
if [ "$RETRY_COUNT" = "$MAX_RETRIES" ]; then
echo "Failed to create a valid tarball after $MAX_RETRIES attempts."
return 1
fi
}
# upload_file tries to upload the tar ball to the FTP server, will retry 5 times and then fail
upload_file() {
MAX_RETRIES=5
RETRY_COUNT=0
while [ "$RETRY_COUNT" -lt "$MAX_RETRIES" ]; do
echo "Deploying as $USER at $HOST"
# Attempt to upload the file
if ftp "$HOST" <<EOF
passive on
type image
cd $DIR
@@ -31,9 +63,24 @@ lcd out
put $EMULATOR.tgz
bye
EOF
then
echo "Upload successful."
break
else
echo "Upload failed. Retrying..."
RETRY_COUNT=`expr "$RETRY_COUNT" + 1`
fi
done
if [ "$RETRY_COUNT" = "$MAX_RETRIES" ]; then
echo "Failed to upload the file after $MAX_RETRIES attempts."
return 1
fi
}
test_archive_integrity(){
# test_archive_integrity will download the tarball after successful upload and verify its integrity
# by binary comparing the contents of the source folder and the expanded folder
test_archive_integrity() {
echo "Testing download of $EMULATOR.tgz"
mkdir -p "$TESTDIR"
cd "$TESTDIR"
@@ -78,15 +125,16 @@ test_archive_integrity(){
fi
}
# main loop
while [ $retry_count -lt $RETRY_LIMIT ]; do
create_archive
upload_file
if test_archive_integrity; then
echo "File integrity verified successfully."
exit 0
else
echo "File integrity verification failed, retrying... ($((retry_count+1))/$RETRY_LIMIT)"
retry_count=$((retry_count+1))
echo "File integrity verification failed, retrying... (`expr "$retry_count" + 1`/$RETRY_LIMIT)"
retry_count=`expr "$retry_count" + 1`
fi
done