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:
committed by
Lars Brinkhoff
parent
63b10e09ca
commit
fa5fd06bd9
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user