aboutsummaryrefslogtreecommitdiff
path: root/tcwg-cleanup-stale-containers.yaml
blob: 32035276841a0824f774450f089cb3df3182c074 (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
- job:
    name: tcwg-cleanup-stale-containers
    project-type: freestyle
    defaults: global
    properties:
        - authorization:
            anonymous:
                - job-read
                - job-extended-read
            linaro:
                - job-build
                - job-cancel
        - build-discarder:
            days-to-keep: 30
            num-to-keep: 100
        - throttle:
            max-per-node: 1
            option: project
    parameters:
        - label:
            name: slave_list
            default: tcwg
            all-nodes: true
            matching-label: 'allCases'
            node-eligibility: 'ignore-offline'
            description: 'Machines to run on'
        - string:
            name: cleanup_running_hours
            default: '10'
            description: 'Delete containers that are more then "hours" old.  Use "0" to disable time check.  Use negative values for dry-run.'
        - string:
            name: cleanup_stopped_hours
            default: '240'
            description: 'Delete containers that are more then "hours" old.  Use "0" to disable the cleanup.  Use negative values for dry-run.'
        - string:
            name: cleanup_ssh_agent_hours
            default: '48'
            description: 'Kill ssh-agent processes that are more then "hours" old.  Use "0" to disable time check.'
        - bool:
            name: cleanup_volumes
            default: 'true'
            description: 'Whether to cleanup dangling volumes'
        - bool:
            name: cleanup_images
            default: 'true'
            description: 'Whether to cleanup images'
        - bool:
            name: verbose
            default: 'false'
            description: 'Whether to be verbose'
        - string:
            name: scripts_branch
            default: refs/heads/master
            description: 'Scripts revision to use'
    disabled: false
    concurrent: true
    display-name: 'TCWG CCC Cleanup stale containers'
    workspace: workspace/tcwg-cleanup-stale-containers_$EXECUTOR_NUMBER/$NODE_NAME
    triggers:
        - timed: '@daily'
    scm:
        - git:
            url: https://git.linaro.org/toolchain/jenkins-scripts.git
            refspec: +refs/heads/*:refs/remotes/origin/* +refs/changes/*:refs/changes/*
            branches:
                - ${scripts_branch}
            skip-tag: true
            shallow-clone: true
            wipe-workspace: true
    wrappers:
        - timeout:
            timeout: 600
        - timestamps
        - ssh-agent-credentials:
            users:
              - 'tcwg-benchmark'
        - build-name:
            name: '#${BUILD_NUMBER}-${NODE_NAME}'
    builders:
        - shell: |
            #!/bin/bash
            set -ex
            cat << EOF > mail-body.txt
            Cleaning stale containers on $NODE_NAME.
            Please check console output at $BUILD_URL to view the results
            EOF
            maybe_ssh=""
            case "$NODE_NAME" in
              tcwg-bmk-bkp-*) ;;
              tcwg-bmk-stm32-*) ;;
              tcwg-bmk-*)
                # Copy jenkins-scripts to benchmarking boards,
                # and run cleanups remotely.
                board="tcwg-${NODE_NAME#tcwg-bmk-}.tcwglab"
                rsync -az --del --rsync-path "mkdir -p $WORKSPACE/; rsync" $WORKSPACE/ $board:$WORKSPACE/
                maybe_ssh="ssh $board"
                ;;
            esac
            case "$NODE_NAME" in
              tcwg-bmk-bkp-*) ;;
              tcwg-bmk-*|tcwg-x86_64-dev-*-short)
                # Only cleanup ssh-agent processes for secondary nodes
                # hosted on tcwg-bmk-bkp-01 and tcwg-x86_64-dev-* machines.
                ./tcwg-cleanup-stale-containers.sh --cleanup-running-hours 0 --cleanup-stopped-hours 0 --cleanup-ssh-agent-hours $cleanup_ssh_agent_hours --cleanup-volumes false --cleanup-images false --verbose $verbose || true
                ;;
            esac

            # Nothing else to do for dev-*-short nodes.
            case "$NODE_NAME" in
              tcwg-x86_64-dev-*-short) exit 0 ;;
            esac

            $maybe_ssh $WORKSPACE/tcwg-cleanup-stale-containers.sh --cleanup-running-hours $cleanup_running_hours --cleanup-stopped-hours $cleanup_stopped_hours --cleanup-ssh-agent-hours $cleanup_ssh_agent_hours --cleanup-volumes $cleanup_volumes --cleanup-images $cleanup_images --verbose $verbose
    publishers:
        - email-ext:
            recipients: tcwg-validation@linaro.org
            aborted: true
            content-type: text
            body: |
              ${FILE,path="mail-body.txt"}