Use production stage to avoid undetected changes in the files

When a generated file does alter but keep the file size the same, the previous script was not able
to catch the situation as only the file size was compared. The checksumming was not allowed by the
provider and the time-based approach was also not possible due to the recreation of all files by
Hugo.
The solution is to use a local copy of the upstream files with the same times as the upstream ones.
By using rsync's more advanced features, only the changed files are going to be rewritten therein.
As a result, the time-based approach now works again.
This commit is contained in:
TSC competition notification bot 2024-02-20 08:59:42 +01:00
parent 521b30ed31
commit 47b7da3003

View File

@ -6,6 +6,7 @@ flock 100
src=/srv/data/tsc-cloud/homepage/hugo-page src=/srv/data/tsc-cloud/homepage/hugo-page
dst=/srv/http/tsc/hugo dst=/srv/http/tsc/hugo
prod=/srv/data/tsc-cloud/homepage/production
cmd="$SSH_ORIGINAL_COMMAND" cmd="$SSH_ORIGINAL_COMMAND"
# echo "$cmd" # echo "$cmd"
@ -47,7 +48,18 @@ doPublishToStage() {
} }
doPublishToProduction() { doPublishToProduction() {
rclone sync --stats 3s -c public/ ionos:/ # This complicated two step publication is required to speed up the transfer.
# The sftp-based production server does not allow to use checksums.
# Hugo recreates all files with the time stamp at building.
# Thus, all files would be transmitted as the time has changed.
# To overcome this, the intermediate cache should have the same times as the upstream server.
echo "Syncing to intermediate stage"
rsync -rlpcv --delete --delete-delay public/ $prod/
echo "Syncing from intermediate stage to production web server"
rclone sync --stats 3s $prod/ ionos:/
echo "Cleaning up empty directories"
rclone rmdirs ionos:/ rclone rmdirs ionos:/
} }