]> git.ipfire.org Git - people/ms/nightly-builds.git/commitdiff
Import server scripts
authorMichael Tremer <michael.tremer@ipfire.org>
Sat, 3 Oct 2015 20:15:53 +0000 (22:15 +0200)
committerMichael Tremer <michael.tremer@ipfire.org>
Sat, 3 Oct 2015 20:15:53 +0000 (22:15 +0200)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
server-scripts/ipfire-cleanup-nightly-builds.sh [new file with mode: 0755]
server-scripts/ipfire-nightly-latest.sh [new file with mode: 0755]

diff --git a/server-scripts/ipfire-cleanup-nightly-builds.sh b/server-scripts/ipfire-cleanup-nightly-builds.sh
new file mode 100755 (executable)
index 0000000..bb6f89e
--- /dev/null
@@ -0,0 +1,30 @@
+#!/bin/bash -l
+
+BASEDIR="/pub/nightly"
+
+MAX_AGE=$(( 7 * 24 * 3600 )) # 7 days
+
+NOW="$(date +"%s")"
+
+counter=0
+for build in $(find "${BASEDIR}" -mindepth 2 -maxdepth 2 -type d | sort -nr); do
+       time="$(basename "${build}")"
+       [ "${time}" = "latest" ] && continue
+
+       # Never delete the last build
+       if [ "${counter}" -lt 1 ]; then
+               counter=$(( ${counter} + 1 ))
+               continue
+       fi
+
+       # Determine age of the build
+       change="$(stat --format="%Y" "${build}")"
+       age=$(( ${NOW} - ${change} ))
+
+       # If the build is old enough we will delete it
+       if [[ ${age} -ge ${MAX_AGE} ]]; then
+               rm -rf "${build}"
+       fi
+done
+
+exit 0
diff --git a/server-scripts/ipfire-nightly-latest.sh b/server-scripts/ipfire-nightly-latest.sh
new file mode 100755 (executable)
index 0000000..756ba8b
--- /dev/null
@@ -0,0 +1,37 @@
+#!/bin/bash -l
+
+BASEDIR="/pub/nightly"
+
+main() {
+       local branch
+       for branch in ${BASEDIR}/*; do
+               [ -d "${branch}" ] || continue
+
+               local -A successful_releases
+
+               local arch
+               local release
+               for release in ${branch}/*/*; do
+                       arch="$(basename "${release}")"
+
+                       local time="$(basename "$(dirname "${release}")")"
+                       [ "${time}" = "latest" ] && continue
+
+                       if [ -e "${release}/.success" ]; then
+                               successful_releases["${arch}"]="${release}"
+                       fi
+               done 2>/dev/null
+
+               for arch in ${!successful_releases[@]}; do
+                       release="${successful_releases[${arch}]}"
+
+                       mkdir -p "${branch}/latest"
+                       rm -f "${branch}/latest/${arch}"
+                       ln -sf --relative "${release}" "${branch}/latest/${arch}"
+               done
+       done
+
+       return 0
+}
+
+main || exit $?