diff --git a/roles/arch_boxes_sync/files/arch-boxes-sync.service b/roles/arch_boxes_sync/files/arch-boxes-sync.service index 5965ae927d687f3cd535c15da6a024eaa78510cc..6b4d56fe8d2b3cb2726329c2d2c8f2ce99df0bda 100644 --- a/roles/arch_boxes_sync/files/arch-boxes-sync.service +++ b/roles/arch_boxes_sync/files/arch-boxes-sync.service @@ -6,4 +6,4 @@ Type=oneshot ExecStart=/usr/local/bin/arch-boxes-sync.sh ProtectSystem=strict PrivateTmp=true -ReadWritePaths=/srv/ftp/images +ReadWritePaths=/srv/ftp/lastupdate /srv/ftp/images diff --git a/roles/arch_boxes_sync/files/arch-boxes-sync.sh b/roles/arch_boxes_sync/files/arch-boxes-sync.sh index aaf76bcac66c6bc5293a35eb264b385b511f980d..4a4b4a4eb243bd74a38a901e477cc44798866c9c 100755 --- a/roles/arch_boxes_sync/files/arch-boxes-sync.sh +++ b/roles/arch_boxes_sync/files/arch-boxes-sync.sh @@ -3,6 +3,7 @@ set -o nounset -o errexit -o pipefail # https://docs.gitlab.com/ee/api/README.html#namespaced-path-encoding readonly PROJECT_ID="archlinux%2Farch-boxes" readonly ARCH_BOXES_PATH="/srv/ftp/images" +readonly LASTUPDATE_PATH="/srv/ftp/lastupdate" readonly MAX_RELEASES="6" # 3 months PACKAGES="$(curl --silent --show-error --fail "https://gitlab.archlinux.org/api/v4/projects/${PROJECT_ID}/packages?per_page=1&sort=desc")" @@ -68,3 +69,5 @@ ln -nsf "${LATEST_VERSION}" "${ARCH_BOXES_PATH}/latest" echo "Removing old releases" cd "${ARCH_BOXES_PATH}" comm --output-delimiter="" -3 <({ ls | grep -v latest | sort -r | head -n "${MAX_RELEASES}"; echo latest; } | sort) <(ls | sort) | tr -d '\0' | xargs --no-run-if-empty rm -rvf + +date +%s > "${LASTUPDATE_PATH}"