aboutsummaryrefslogtreecommitdiff
path: root/tcwg-test-release.yaml
blob: 3235887444290ba7afa438c42856925285595b73 (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
123
124
125
126
127
128
129
130
131
132
133
- job:
    name: tcwg-test-release
    project-type: freestyle
    defaults: global
    properties:
        - authorization:
            anonymous:
                - job-read
                - job-extended-read
            linaro:
                - job-build
                - job-cancel
        - build-discarder:
            days-to-keep: 60
            num-to-keep: 100
    parameters:
        - string:
            name: tarball_url
            default: ''
            description: 'The GCC binary tarball to test'
        - string:
            name: scripts_branch
            default: refs/remotes/origin/master
            description: 'Scripts revision to use '
        - string:
            name: build_container_tag
            default: 'lts_1'
            description: 'Distro to use for the container: xenial, bionic, focal.'
        - string:
            name: release
            default:
            description: 'Release name, only displayed in job name'
        - string:
            name: target
            default:
            description: 'Target, only displayed in job name'
        - string:
            name: tcwg_regression_rev
            default: 'master'
            description: 'tcwg-regression revision to use'
        - bool:
            name: debug
            default: false
            description: 'Whether to enable bash debugging output.'
        - bool:
            name: dryrun
            default: false
            description: 'Dry-run, do nothing, just print steps'
    disabled: false
    node: tcwg-x86_64-cam
    retry-count: 3
    concurrent: true
    workspace: /home/tcwg-buildslave/workspace/tcwg-test-release/$release/$target
    display-name: 'TCWG Test Release'
    scm:
        - git:
            url: https://git.linaro.org/toolchain/jenkins-scripts.git
            refspec: +refs/changes/*:refs/remotes/changes/*
            branches:
                - ${scripts_branch}
            skip-tag: true
            shallow-clone: true
            wipe-workspace: true
    wrappers:
        - timeout:
            timeout: 300
        - timestamps
        - ssh-agent-credentials:
            # tcwg-buildslave user id
            users:
                - 'e0958a95-204f-4c14-a66c-5e2be6c5d50a'
        - build-name:
            name: '#${BUILD_NUMBER}-${ENV,var="release"}-${ENV,var="target"}'
    builders:
        - shell: |      
            #!/bin/bash

            . jenkins-helpers.sh

            if test x${debug} = x"true"; then
              shell="/bin/bash -x"
              set -x
            else
              shell="/bin/bash"
            fi

            # tarball_url is read from the tcwg.params file, which is
            # setup by the MakeRelease job.
            if test x"${tarball_url}" = x; then
              echo "ERROR: no binary tarball specified!"
              exit 1
            fi

            # Start build container
            builder=$(print_host_for_node $NODE_NAME)
            build_container_type=docker
            # Use tarball name to decide if we use an i386 container or an amd64 one
            tarball_file=$(basename ${tarball_url})
            case ${tarball_file} in
                *-i686*)
                    builder_arch=i386
                    echo "ERROR: i386 containers no longer supported for tarball ${tarball_file}"
                    exit 1
                    ;;
                *-x86_64*) builder_arch=amd64 ;;
                *)
                    echo "ERROR: could not determine container type from tarball ${tarball_file}"
                    exit 1
                    ;;
            esac
            bash -x ${WORKSPACE}/start-container-${build_container_type}.sh --arch ${builder_arch} --distro ${build_container_tag} --session-host ${builder} --dryrun ${dryrun} > build-container.sh

            # Define CONTAINER, CONTAINER_CLEANUP, session_host and session_port
            . ./build-container.sh
            BUILD_CONTAINER="${CONTAINER}"
            BUILD_CONTAINER_CLEANUP="${CONTAINER_CLEANUP}"

            # Make sure to cleanup build container if something goes wrong
            if [ x"${BUILD_CONTAINER_CLEANUP}" != x ]; then
                CONTAINERS_CLEANUP="${BUILD_CONTAINER_CLEANUP}"
                trap "${CONTAINERS_CLEANUP}" EXIT
            fi

            ${BUILD_CONTAINER} "cd ${WORKSPACE} && ${shell} ${WORKSPACE}/TestRelease.job --tarball ${tarball_url} --tcwg-regression-rev ${tcwg_regression_rev}"

            exit $?
    publishers:
        - email-ext:
            recipients: 'tcwg-validation@linaro.org'
            aborted: true
            send-to:
              requester
              recipients