blob: eb492e24fe22d5123d661138ea6052b017efea95 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
|
- job:
name: tcwg-cleanup-stale-schroot-sessions
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: '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-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" -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
|