- job: name: tcwg-cleanup-stale-workspaces project-type: matrix defaults: global logrotate: daysToKeep: 30 numToKeep: 30 properties: - authorization: anonymous: - job-read - job-extended-read linaro: - job-build - job-cancel - throttle: max-per-node: 1 parameters: - string: name: days default: '10' description: 'Delete workspace more then days old' - bool: name: dry_run default: 'false' description: 'Whether to do a dry-run' - string: name: maxdepth default: '1' description: 'Do not override unless you understand what you are doing' disabled: false node: tcwg-x86_64-cam concurrent: true display-name: 'TCWG Cleanup stale workspaces' triggers: - timed: '@daily' axes: - axis: type: slave name: label values: - tcwg-aarch64-07 - tcwg-aarch64-build-01 - tcwg-aarch64-build-02 - tcwg-aarch64-test-01 - tcwg-aarch64-test-02 - tcwg-x86_64-build-01 - tcwg-x86_64-build-02 - tcwg-x86_64-build-03 - tcwg-x86_64-build-04 - tcwg-x86_64-build-05 - tcwg-x86_64-build-06 - tcwg-x86_64-dev-01 - tcwg-x86_64-ex40build-01 - tcwg-x86_64-ex40build-02 - tcwg-x86_64-ex40build-04 - tcwg-x86_64-ex40build-06 - tcwg-x86_64-ex40build-07 - tcwg-x86_64-ex40build-08 - tcwg-x86_64-ex40build-09 execution-strategy: sequential: false wrappers: - timeout: timeout: 600 - timestamps - ssh-agent-credentials: # tcwg-buildslave user id users: - 'e0958a95-204f-4c14-a66c-5e2be6c5d50a' - build-name: name: '#${BUILD_NUMBER}' builders: - shell: | #!/bin/bash set -e set -x if ! [ "$days" -ge "1" ]; then echo "ERROR: Refusing to delete workspaces that are $days days old" exit 1 fi echo "Date / size report before:" ls -ld $HOME/workspace/* || true du -hs $HOME/workspace/* || true # Semantics of find's mtime "+N" stands for N+1 days old or older. days_1=$(($days-1)) dirs=($(find $HOME/workspace/ -type d -maxdepth $maxdepth -mtime +$days_1)) rm_dirs=() for dir in "${dirs[@]}"; do if [ x"$(find $dir -mtime -$days | wc -l)" = x"0" ]; then rm_dirs=("${rm_dirs[@]}" $dir) fi done if [ ${#rm_dirs[@]} != 0 ]; then echo "Removing directories:" ls -ld "${rm_dirs[@]}" du -hs "${rm_dirs[@]}" if ! $dry_run; then rm -rf "${rm_dirs[@]}" else echo "DRY_RUN: NOT REMOVING DIRECTORIES" fi echo "Date / size report after:" ls -ld $HOME/workspace/* || true du -hs $HOME/workspace/* || true fi