mirror of https://gerrit.osmocom.org/osmo-ci
contrib/obs-mirror: import
Import scripts from OS#4862 to have them properly versioned. We use this to replicate Osmocom related packages from OBS to: https://download.osmocom.org/obs-mirror Put it in contrib/, because it doesn't need to get installed to the jenkins nodes (as it would happen with everything in scripts/). Related: OS#4862 Change-Id: I3f47cddbcee6c9b85fde77a039dcd5b54dd89f2d
This commit is contained in:
parent
9832c6aa4e
commit
05902bd35e
|
@ -0,0 +1,7 @@
|
|||
The scripts in this directory are used to create an archive of Osmocom related
|
||||
packages from OBS, at: https://downloads.osmocom.org/obs-mirror/
|
||||
|
||||
There is no mechanism in place to deploy updated scripts after updating them
|
||||
here in osmo-ci.git, so this must be done manually.
|
||||
|
||||
See OS#4862 for more information.
|
|
@ -0,0 +1,9 @@
|
|||
latest/CentOS_8
|
||||
latest/Debian_10
|
||||
latest/Raspbian_10
|
||||
latest/xUbuntu_21.04
|
||||
|
||||
nightly/CentOS_8
|
||||
nightly/Debian_10
|
||||
nightly/Raspbian_10
|
||||
nightly/xUbuntu_21.04
|
|
@ -0,0 +1,40 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Mirror script to create a local archive of the OBS packages in the network:osmocom
|
||||
# repositories / projects
|
||||
#
|
||||
# We are using hard-links to perform de-duplication on the local side; only
|
||||
# those files that changed compoared to the previous run will be rsync'ed over
|
||||
# from the remote side
|
||||
#
|
||||
# See also: OS#4862
|
||||
|
||||
set -e -x
|
||||
|
||||
# base directory on the local side
|
||||
BASE_DIR="/downloads/obs-mirror/"
|
||||
# sync remote where to find the osmocom packages
|
||||
REMOTE="rsync.opensuse.org::opensuse-full-really-everything-including-repositories/opensuse/repositories/network:/osmocom:"
|
||||
|
||||
cd "$BASE_DIR"
|
||||
|
||||
RSYNC_ARGS="-av --delete"
|
||||
RSYNC_ARGS="$RSYNC_ARGS --files-from /home/pkgmirror/obs-mirror-include.txt --recursive"
|
||||
DATE=`date +%Y%m%d-%H%M%S`
|
||||
|
||||
# create output directory
|
||||
DIR="$BASE_DIR/$DATE"
|
||||
mkdir -p "$DIR"
|
||||
|
||||
PREVIOUS="$BASE_DIR/.previous"
|
||||
if [ -d "$PREVIOUS" ]; then
|
||||
RSYNC_ARGS+=" --link-dest=$PREVIOUS"
|
||||
fi
|
||||
|
||||
# finally, perform rsync
|
||||
# || true: don't stop here if one of the dirs from the include list does not exist
|
||||
rsync $RSYNC_ARGS "$REMOTE"/ "$DIR"/ || true
|
||||
|
||||
# update '.previous' for the next run
|
||||
rm -f "$PREVIOUS"
|
||||
ln -sf "$DATE" "$PREVIOUS"
|
|
@ -0,0 +1,31 @@
|
|||
#!/bin/sh -e
|
||||
# Remove nightly archives older than one month (OS#4862)
|
||||
DRY=0
|
||||
|
||||
# Get removal date in seconds since epoch and display it
|
||||
DATE_RM_SEC=$(expr $(date +%s) - 3600 \* 24 \* 32)
|
||||
DATE_RM_STR=$(date -d "@$DATE_RM_SEC" +"%Y-%m-%d")
|
||||
echo "Removing nightly archives from $DATE_RM_STR and older"
|
||||
|
||||
cd /downloads/obs-mirror
|
||||
|
||||
for i in */nightly; do
|
||||
# "Last modified" isn't set to the date of the dir name for some
|
||||
# archives, so parse the date from the dir name instead
|
||||
DATE_DIR="$(basename "$(dirname "$i")")" # e.g. "20210604-002301"
|
||||
DATE_DIR_SEC="$(date -d "$(echo "$DATE_DIR" | cut -d "-" -f 1)" +%s)"
|
||||
if [ -z "$DATE_DIR_SEC" ]; then
|
||||
echo "ERROR: $i: failed to parse date from dir name"
|
||||
continue
|
||||
fi
|
||||
|
||||
if [ "$DATE_DIR_SEC" -lt "$DATE_RM_SEC" ]; then
|
||||
DATE_DIR_STR="$(date -d "@$DATE_DIR_SEC" +"%Y-%m-%d")"
|
||||
echo "Removing $i ($DATE_DIR_STR)..."
|
||||
if [ "$DRY" = 0 ]; then
|
||||
rm -r "$i"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
echo "Done"
|
|
@ -0,0 +1,12 @@
|
|||
#!/bin/sh -ex
|
||||
BASE_DIR="/downloads/obs-mirror/"
|
||||
|
||||
cd "$BASE_DIR"
|
||||
|
||||
rsync \
|
||||
-a \
|
||||
--list-only \
|
||||
--files-from /home/pkgmirror/obs-mirror-include.txt \
|
||||
--recursive \
|
||||
"$(realpath .previous)"/ \
|
||||
new-backup-dir/
|
Loading…
Reference in New Issue