diff options
Diffstat (limited to 'bin')
-rwxr-xr-x | bin/cleanup | 38 |
1 files changed, 27 insertions, 11 deletions
diff --git a/bin/cleanup b/bin/cleanup index 09a823b..fe4f34e 100755 --- a/bin/cleanup +++ b/bin/cleanup @@ -41,26 +41,42 @@ fi rm "${build_log_directory}/error/${file}" done -# only keep 10 newest logs per failed package +# only keep 10 newest logs per failed package and fail_reason -find "${build_log_directory}/error" -maxdepth 1 -type f -printf '%f\n' | \ - sed 's|^\(.*\)\(\.\([^.]\+\)\.build-log\.gz\)$|\1\2 \3 \1|' | \ - sort -k3,3 -k2r,2 | \ - uniq -f2 --group=prepend | \ - cut -d' ' -f1 | \ +# shellcheck disable=SC2016 +{ + printf 'SELECT' + printf ' CONCAT(`failed_builds`.`reason`,"-",`failed_builds`.`build_assignment`),' + printf '`failed_builds`.`id`,' + printf '`failed_builds`.`log_file`' + printf ' FROM `failed_builds`' + printf ' WHERE `log_file_exists`' + printf ' ORDER BY' + printf ' `failed_builds`.`reason`,' + printf '`failed_builds`.`build_assignment`,' + printf '`failed_builds`.`date` DESC;\n' +} | \ + mysql_run_query | \ { count=0 - while read -r a; do - if [ -z "${a}" ]; then + old_group='' + while read -r group id log_file; do + if [ "${group}" != "${old_group}" ]; then count=0 - continue + old_group="${group}" fi if [ ${count} -ge 10 ]; then - rm "${build_log_directory}/error/${a}" + rm "${build_log_directory}/error/${log_file}" + printf '%s,' "${id}" fi count=$((count+1)) done - } + } | \ + sed ' + s/,$/);\n/ + s/^/DELETE FROM `failed_builds` WHERE `failed_builds`.`id` IN (/ + ' | \ + mysql_run_query # only keep namcap logs of last 2 weeks for succeeded packages find "${build_log_directory}/success" -maxdepth 1 -type f -mtime +14 \ |