aboutsummaryrefslogtreecommitdiff
path: root/leg-openstack-rally.yaml
blob: 4ea2df930ded69f282449aa03c24ee64faac2aaf (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
- job:
    name: leg-openstack-rally
    project-type: matrix
    defaults: global
    logrotate:
        daysToKeep: 30
        numToKeep: 30
    properties:
        - authorization:
            anonymous:
                - job-read
                - job-extended-read
                - job-workspace
            linaro:
                - job-read
                - job-extended-read
                - job-build
                - job-cancel
    parameters:
        - string:
            name: BUNDLE_STREAM_NAME
            default: '/private/team/openstack/rally-ci/'
        - string:
            name: LAVA_SERVER
            default: 'openstack.validation.linaro.org/RPC2/'
        - string:
            name: LAVA_JOB_DEFINITION
            default: 'configs/leg-openstack-rally/lava-job-definitions/${DEVICE_TYPE}/template-rally.yaml'
    disabled: false
    node: build
    child-workspace: .
    display-name: 'LEG - Openstack Rally'
    axes:
        - axis:
            type: user-defined
            name: DEVICE_TYPE
            values:
              - mustang
        - axis:
            type: user-defined
            name: OS_DISTRO
            values:
              - ubuntu
        - axis:
            type: user-defined
            name: OS_VERSION
            values:
              - trusty
        - axis:
            type: user-defined
            name: DEVSTACK_BRANCH
            values:
              - master
    execution-strategy:
        sequential: true
    triggers:
        - timed: '@daily'
    wrappers:
        - timestamps
        - matrix-tie-parent:
            node: build
    builders:
        - shell: |
            #!/bin/bash

            set -ex

            # IMPORTANT: specify the exact target device (required by the LAVA job
            # template) to use for the specified device type
            case "${DEVICE_TYPE}" in
              mustang)
                export DEVICE_TARGET=osmustang02
                ;;
            esac

            rm -rf configs lci-build-tools
            git clone --depth 1 http://git.linaro.org/ci/lci-build-tools.git
            git clone --depth 1 http://git.linaro.org/ci/job/configs.git

            # FIXME: regression introduced with commit 00a22059
            wget https://git.linaro.org/ci/lci-build-tools.git/blob_plain/3d23206c4afe0213d8f05b669a8213e7b26903cc:/yaml-to-json.py -O lci-build-tools/yaml-to-json.py

            # Update the template based on the specified os distro
            case "${OS_DISTRO}" in
              ubuntu)
                # The template needs to be updated to specify the correct cloud image to
                # pull. This must be done BEFORE calling yaml-to-json.py!
                LAVA_CLOUD_IMG_URL="http://cloud-images.ubuntu.com/${OS_VERSION}/current/${OS_VERSION}-server-cloudimg-arm64-disk1.img"
                sed -i "s|\${LAVA_CLOUD_IMG_URL}|${LAVA_CLOUD_IMG_URL}|" ${LAVA_JOB_DEFINITION}
                ;;
            esac

            # Update the metadata fields in the template
            sed -e "s|\${DEVSTACK_BRANCH}|${DEVSTACK_BRANCH}|" \
                -e "s|\${OS_DISTRO}|${OS_DISTRO}|" \
                -e "s|\${OS_VERSION}|${OS_VERSION}|" \
                < ${LAVA_JOB_DEFINITION} \
                > ${LAVA_JOB_DEFINITION}.new

            ./lci-build-tools/yaml-to-json.py ${LAVA_JOB_DEFINITION}.new > custom_lava_job_definition.json

            cat << EOF > post_build_lava_parameters
            DEVICE_TYPE=${DEVICE_TYPE}
            BUNDLE_STREAM_NAME=${BUNDLE_STREAM_NAME}
            CUSTOM_JSON_URL=${JOB_URL}/ws/custom_lava_job_definition.json
            LAVA_SERVER=${LAVA_SERVER}
            EOF
        - trigger-builds:
            - project: 'post-build-lava'
              property-file: post_build_lava_parameters
              block: true