aboutsummaryrefslogtreecommitdiff
path: root/tcwg-test-release-matrix.yaml
blob: d28fd0dbfc7e282d982dc2adaa4021d64e0f64e4 (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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
- job:
    name: tcwg-test-release-matrix
    project-type: matrix
    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: 'http://releases.linaro.org/components/toolchain/binaries/latest'
            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: 'trusty'
            description: 'Distro to use for the container: trusty, xenial.'
        - string:
            name: release
            default:
            description: 'Release name'
        - string:
           name: target_list
           default: 'aarch64-elf aarch64-linux-gnu aarch64-linux-gnu_ilp32 aarch64_be-elf aarch64_be-linux-gnu armv8l-linux-gnueabihf arm-eabi arm-linux-gnueabi arm-linux-gnueabihf armeb-eabi armeb-linux-gnueabi armeb-linux-gnueabihf'
           description: 'List of targets to use'
        - 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.'
    disabled: false
    node: tcwg-coordinator
    retry-count: 3
    concurrent: true
    display-name: 'TCWG Test Release matrix'
    scm:
        - git:
            url: https://git-us.linaro.org/toolchain/jenkins-scripts.git
            refspec: +refs/changes/*:refs/remotes/changes/*
            branches:
                - ${scripts_branch}
            skip-tag: true
            shallow-clone: true
            wipe-workspace: true
    axes:
        - axis:
            type: slave
            name: label
            values:
               - tcwg-x86_32-build
               - tcwg-x86_64-build
        - axis:
            type: dynamic
            name: target
            values:
                - target_list
    execution-strategy:
        sequential: false
    triggers:
        - gerrit:
            server-name: 'review.linaro.org'
            gerrit-build-successful-codereview-value: 1
            gerrit-build-failed-codereview-value: -1
            projects:
                - project-compare-type: 'PLAIN'
                  project-pattern: 'toolchain/tcwg-regression'
                  branches:
                    - branch-pattern: 'master'
            silent-start: 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
            set -e

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

            . jenkins-helpers.sh

            if [ x"$GERRIT_REFSPEC" != x"" ]; then
              tcwg_regression_rev="$GERRIT_REFSPEC"
            fi

            if test x"${tarball_url}" = x; then
              echo "ERROR: no binary tarball specified!"
              exit 1
            fi

            case "$target:$toolchain_config:release" in
              aarch64-linux-gnu_ilp32:gcc7:*-rc*)
                # Building ILP32 toolchain as release candidate of gcc7.
                ;;
              aarch64-linux-gnu_ilp32:*)
                echo "SKIPPING ILP32 TOOLCHAIN IN NON-RC/NON-GCC7 BUILD"
                exit 0
                ;;
            esac

            case ${label} in
                *32*)
                    host=i686
                    builder_arch=i386
                    ;;
                *64*)
                    host=x86_64
                    builder_arch=amd64
                    ;;
                *)
                    echo "Unsupported slave type: ${label}"
                    exit 1
                    ;;
            esac

            # Start build container
            builder=$(print_host_for_node $NODE_NAME)
            build_container_type=docker
            bash -x ${WORKSPACE}/start-container-${build_container_type}.sh --arch ${builder_arch} --distro ${build_container_tag} --session-host ${builder} > 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

            container_exec ${shell} ${WORKSPACE}/TestRelease.job --tarball "${tarball_url}/${target}/gcc-linaro-*-*-${host}_${target}.tar.xz" --workspace ${WORKSPACE}/linux --tcwg-regression-rev ${tcwg_regression_rev}

            # Test the mingw toolchain on 32 bit host only
            case ${label} in
                *32*)
                    host=i686-mingw32
                    container_exec ${shell} ${WORKSPACE}/TestRelease.job --tarball "${tarball_url}/${target}/gcc-linaro-*-*-${host}_${target}.tar.xz" --workspace ${WORKSPACE}/mingw --tcwg-regression-rev ${tcwg_regression_rev}
                    ;;
            esac

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