aboutsummaryrefslogtreecommitdiff
path: root/tcwg-cleanup-stale-schroot-sessions.yaml
blob: d2d547df0186c732cc17fbc261f5194ed8da1ece (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
- 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
            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-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'