- job: name: tcwg-cleanup-stale-schroot-sessions-christophe project-type: freestyle 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 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: 'true' 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.' - node: name: TCWG_SLAVES allowed-slaves: - 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-dev-02 - tcwg-x86_64-ex40build-01 ignore-offline-nodes: true allowed-multiselect: true disabled: false concurrent: true display-name: 'TCWG ZZZ Cleanup stale schroot sessions Christophe' triggers: # Workaround jjb bug and disable timed trigger usiing Feb 31st - timed: '0 0 31 2 *' 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 echo Running on `hostname` echo TCWG_SLAVES=$TCWG_SLAVES 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'