- job: name: tcwg-cleanup-stale-schroot-sessions project-type: matrix defaults: global properties: - authorization: anonymous: - job-read - job-extended-read linaro: - job-build - job-cancel - build-discarder: days-to-keep: 30 num-to-keep: 30 - throttle: max-per-node: 1 option: project parameters: - string: name: days default: '5' description: 'Delete schroot sessions more then days old. To effectively disable time check use 0.' - bool: name: dry_run default: 'false' description: 'Whether to do a dry-run' - string: name: schroot_name default: 'tcwg-build-*' description: 'Schroot name. Do not override unless you understand what you are doing.' disabled: false node: tcwg-x86_64-cam concurrent: false display-name: 'TCWG CCC Cleanup stale schroot sessions' 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-build-07 - tcwg-x86_64-build-08 - tcwg-x86_64-dev-01 - tcwg-x86_64-dev-02 - tcwg-x86_64-ex40build-01 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" -lt "0" ]; then echo "ERROR: Refusing to delete sessions that are $days days old" exit 1 fi echo "Sessions report before:" ls -l /var/lib/schroot/session/ || true # Semantics of find's mtime "+N" stands for N+1 days old or older. days_1=$(($days-1)) sessions=($(cd /var/lib/schroot/session && find . -type f -name "$schroot_name" -mtime +$days_1 | sed -e "s#^\./##")) rm_sessions=() for session in "${sessions[@]}"; do if grep -q "users=$USER" /var/lib/schroot/session/$session; then rm_sessions=("${rm_sessions[@]}" $session) fi done status="0" if [ ${#rm_sessions[@]} != 0 ]; then echo "Removing sessions:" (cd /var/lib/schroot/session && ls -l "${rm_sessions[@]}") if ! $dry_run; then for session in "${rm_sessions[@]}"; do echo "Removing session $session" schroot -f -e -c session:$session | true if [ x"${PIPESTATUS[0]}" = x"0" ]; then echo "SUCCESS" else echo "FAILED" status="1" fi done else echo "DRY_RUN: NOT REMOVING SESSIONS" fi echo "Sessions report after:" ls -l /var/lib/schroot/session/ || true fi exit $status publishers: - email: recipients: 'maxim.kuvyrkov@linaro.org christophe.lyon@linaro.org'