aboutsummaryrefslogtreecommitdiff
path: root/tcwg-abe-test.yaml
blob: 6e7b9c503b5eb31405627ac1d99d7d7eb4363adb (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
- job:
    name: tcwg-abe-test
    project-type: matrix
    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
    parameters:
        - string:
            name: GERRIT_PATCHSET_REVISION
            default: refs/remotes/origin/master
            description: 'Patched ABE revision'
        - string:
            name: test_list
            default: 'cross_build native_build testsuite abe-tests abe-tests-checkout'
            description: 'List of tests to perform'
        - string:
            name: scripts_branch
            default: master
            description: 'Scripts branch to use'
    disabled: false
    node: tcwg-coordinator
    retry-count: 3
    concurrent: true
    display-name: 'TCWG BBB ABE Test'
    scm:
        - git:
            url: https://git-us.linaro.org/toolchain/abe.git
            refspec: +refs/changes/*:refs/remotes/changes/*
            branches:
                - ${GERRIT_PATCHSET_REVISION}
            skip-tag: true
            shallow-clone: false
            wipe-workspace: true
            choosing-strategy: gerrit
    triggers:
        - gerrit:
            server-name: 'review.linaro.org'
            override-votes: true
            gerrit-build-successful-verified-value: 1
            gerrit-build-failed-verified-value: -1
            gerrit-build-successful-codereview-value: 1
            gerrit-build-failed-codereview-value: -1
            readable-message: true
            successful-message: 'Works for me'
            failure-message: 'Well ... it worked on my machine'
            trigger-for-unreviewed-patches: true
            projects:
                - project-compare-type: 'ANT'
                  project-pattern: 'toolchain/abe'
                  branches:
                    - branch-compare-type: 'ANT'
                      branch-pattern: 'master'
            silent-start: true
    axes:
        - axis:
            type: slave
            name: label
            values:
                - tcwg-x86_64-build
        - axis:
            type: dynamic
            name: test
            values:
                - test_list
    execution-strategy:
        sequential: false
    wrappers:
        - timeout:
            timeout: 300
        - timestamps
        - ssh-agent-credentials:
            # tcwg-buildslave user id
            users:
                - 'e0958a95-204f-4c14-a66c-5e2be6c5d50a'
        - build-name:
            name: '#${BUILD_NUMBER}-${GIT_REVISION,length=8}'
    builders:
        - shell: |
            #!/bin/bash

            set -ex

            ARTIFACTS=${WORKSPACE}/artifacts
            mkdir -p "${ARTIFACTS}"
            # Create at least an (empty) artifact so that Jenkins does not complain
            # FIXME: Create an artifact for each case below, and no empty.txt
            echo > ${ARTIFACTS}/empty.txt

            # Explicitly checkout the branch/revision, as gerrit choosing
            # strategy doesn't pick up the right one when manually triggered.
            git checkout -f ${GERRIT_PATCHSET_REVISION}

            git clone -b $scripts_branch --depth 1 https://git-us.linaro.org/toolchain/jenkins-scripts
            . ./jenkins-scripts/jenkins-helpers.sh

            ./jenkins-scripts/start-container-docker.sh --label $label --node $NODE_NAME --distro trusty --task build --prefix build_ > build-container.sh
            . ./build-container.sh
            BUILD_SHELL="build_container_exec bash"
            $BUILD_SHELL -c "echo \"Build session is up; ulimit config:\"; ulimit -a"

            # Remove schroot session on exit
            trap "build_container_cleanup" 0 1 2 3 5 9 13 15


            status=0
            case "$test" in
              cross_build)
                tester_label=$(print_tester_label_for_target arm-linux-gnueabihf)
                ./jenkins-scripts/start-container-docker.sh --label $tester_label --distro trusty --task test --prefix test_ > test-container.sh
                . ./test-container.sh
                trap "build_container_cleanup; test_container_cleanup" 0 1 2 3 5 9 13 15

                ${BUILD_SHELL} -x ${WORKSPACE}/jenkins-scripts/jenkins.sh --workspace ${WORKSPACE} --abedir ${WORKSPACE} --target arm-linux-gnueabihf --testcontainer ${test_container_host}:${test_container_port} --runtests --excludecheck gdb --override '--extraconfigdir ../config/gcc7'
                status=$?
                ;;
              native_build)
                ${BUILD_SHELL} -x ${WORKSPACE}/jenkins-scripts/jenkins.sh --workspace ${WORKSPACE} --abedir ${WORKSPACE} --target native --runtests --bootstrap --excludecheck gdb --override '--extraconfigdir ../config/gcc6'
                status=$?
                ;;
              testsuite)
                ${BUILD_SHELL} -c "set -ex; ./configure; make check"
                status=$?
                ;;
              abe-tests)
                ${BUILD_SHELL} -c "set -ex; git clone https://git.linaro.org/toolchain/abe-tests.git; cd abe-tests; ./test-manifest2.sh --abe-path `pwd` --ref-snapshots /home/tcwg-buildslave/snapshots-ref --quiet --display-summary" || status=$?
                cp abe-tests/full-manifest-test/*.txt ${ARTIFACTS}
                rm ${ARTIFACTS}/empty.txt
                # full build logs are large, and not very useful, so we
                # don't waste the disk space on them
                rm -f ${ARTIFACTS}/test-mani-build[12].txt
                ;;
              abe-tests-checkout)
                ${BUILD_SHELL} -c "set -ex; git clone https://git.linaro.org/toolchain/abe-tests.git; cd abe-tests; ./test-checkout.sh --clean-snapshots --abe-path `pwd` --ref-snapshots /home/tcwg-buildslave/snapshots-ref" || status=$?
                cp abe-tests/checkout-test/workspace*/test_*.log ${ARTIFACTS}
                rm artifacts/empty.txt
                # the reports from here aren't usually needed, so are
                # worth compressing
                xz ${ARTIFACTS}/*
                ;;
            esac

            exit ${status}
    publishers:
        - workspace-cleanup:
            include:
              - "nothing"
            dirmatch: true
        - archive:
            artifacts: 'artifacts/*'
            latest-only: false