summaryrefslogtreecommitdiff
path: root/bin/nit-picker
diff options
context:
space:
mode:
authorErich Eckner <git@eckner.net>2019-09-18 13:38:00 +0200
committerErich Eckner <git@eckner.net>2019-09-18 13:40:08 +0200
commit492394371b39fa562304b45e809e9cb944ee12fa (patch)
tree4b6d7b81f3dff4ccf5662fc96f2ce48c34a46de3 /bin/nit-picker
parent8424238d06afd0f3d7f011af1bcff68cf1912c67 (diff)
downloadbuilder-492394371b39fa562304b45e809e9cb944ee12fa.tar.xz
bin/nit-picker: check for long-running builds
Diffstat (limited to 'bin/nit-picker')
-rwxr-xr-xbin/nit-picker60
1 files changed, 60 insertions, 0 deletions
diff --git a/bin/nit-picker b/bin/nit-picker
index 9395ef4..44a3e62 100755
--- a/bin/nit-picker
+++ b/bin/nit-picker
@@ -119,6 +119,12 @@ while pgrep -x ii >/dev/null \
printf ' WHERE `repositories`.`is_on_master_mirror`'
printf ';\n'
+ printf 'SELECT'
+ printf ' "build-duration",'
+ printf '`build_slaves`.`name`'
+ printf ' FROM `build_slaves`'
+ printf ';\n'
+
printf 'SELECT DISTINCT'
printf ' "binary-dependencies",'
mysql_package_name_query
@@ -332,6 +338,60 @@ while pgrep -x ii >/dev/null \
"${tmp_dir}/${parameters}" \
"${tmp_dir}/${parameters}.sig"
;;
+ 'build-duration')
+ infos=$(
+ # shellcheck disable=SC2016
+ {
+ printf 'SELECT'
+ printf '`persons`.`name`,'
+ printf '`build_slaves`.`name`,'
+ printf '`architectures`.`name`,'
+ printf '`package_sources`.`pkgbase`,'
+ printf 'UNIX_TIMESTAMP(NOW())-UNIX_TIMESTAMP('
+ printf 'MAX('
+ printf 'IF('
+ printf '`ssh_log`.`action`="get-assignment",'
+ printf '`ssh_log`.`date`,'
+ printf 'NULL'
+ printf ')'
+ printf ')'
+ printf ')'
+ printf ' FROM `build_slaves`'
+ mysql_join_build_slaves_build_assignments
+ mysql_join_build_assignments_architectures
+ mysql_join_build_assignments_package_sources
+ mysql_join_build_slaves_ssh_keys
+ mysql_join_ssh_keys_persons
+ mysql_join_build_slaves_ssh_log
+ printf ' WHERE `ssh_log`.`date`>=ADDDATE(NOW(),"-7 00:00:00")'
+ printf ' AND `build_slaves`.`name`=from_base64("%s")' \
+ "$(
+ printf '%s' "${parameters}" \
+ | base64 -w0
+ )"
+ printf ' GROUP BY `build_slaves`.`id`'
+ printf ';\n'
+ } \
+ | mysql_run_query \
+ | tr '\t' ' '
+ )
+ if [ -z "${infos}" ]; then
+ continue
+ fi
+ if [ "${infos##* }" -lt $((60*60*24)) ]; then
+ continue
+ fi
+ printf '%s %s\n' \
+ "${infos% *}" \
+ "$(
+ date -d"@${infos##* }" +'%-j %H:%M:%S'
+ )" \
+ | awk '{print $1 ": your slave " $2 " builds " $3 "/" $4 " for more than a day, now (" ($5-1) " day(s) " $6 ")"}' \
+ | irc_say
+ if [ $# -eq 0 ]; then
+ sleep 60
+ fi
+ ;;
*)
>&2 printf 'action "%s" is not yet implemented ...\n' "${action}"
;;