aboutsummaryrefslogtreecommitdiff
path: root/tcwg-benchmark.yaml
blob: 35b0bfd9bc0bfa29715abbcc3feca33b12818b2b (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
#See http://docs.openstack.org/infra/jenkins-job-builder/genindex.html
- job:
    name: tcwg-benchmark
    project-type: freestyle
    node: master
    display-name: 'TCWG Benchmark'
    description: 'Dispatch TCWG benchmark jobs to LAVA'
    logrotate:
        daysToKeep: 30
        numToKeep: 30
        artifactNumToKeep: 1
    properties:
        - authorization:
            anonymous:
                - job-read
                - job-extended-read
            bernie.ogden@linaro.org:
                - job-build
                - job-cancel
        - copyartifact:
            projects: tcwg-post-build-lava
    parameters:
        - choice:
            name: BENCHMARK
            choices:
              - CoremarkPro
              - CPU2006
              - CPU2000
              - EEMBC
              - fakebench
        - choice:
            name: TARGET_CONFIG
            choices:
              - Arndale
              - Mustang
              - Panda-ES
              - Juno-A53
              - Juno-A57
              - KVM (x86_64)
        - string:
            name: RUN_FLAGS
            default: '--size test --iterations 1 --tune base'
            description: |
              Flags passed to benchmark framework at runtime.
              Examples --
              SPEC -- --size test --iterations 1 int (run 1 iteration of the int suite using the test workload)
        - string:
            name: PREBUILT
            description: |
              A prebuilt benchmark tarball as produced by abe or direct make invocation.
              If produced by abe, tar up the contents of build/<host>/<target>.
              If produced by direct make, tar up the top-level git repository (but you can exclude the .git dir).
              If this option is given, no build will be performed and the compiler_flags and make_flags fields will be ignored.
        - string:
            name: TOOLCHAIN
            default: 'https://releases.linaro.org/components/toolchain/binaries/latest-5.1/aarch64-linux-gnu/gcc-linaro-5.1-2015.08-x86_64_aarch64-linux-gnu.tar.xz'
            description: |
              Toolchain to use - use local filesystem path, or formats interpretable by wget or scp/rsync.
              Must be supplied even when using a prebuilt tarball, but in this case does not have to exist on host.
              Examples --
              /usr/bin/gcc
              aarch64-linux-gnu-clang
              http://releases.linaro.org/14.09/components/toolchain/binaries/gcc-linaro-aarch64-linux-gnu-4.9-2014.09_linux.tar.xz
              my.name@my.server:location_of_my_toolchain
        - string:
            name: SYSROOT
            default: 'https://releases.linaro.org/components/toolchain/binaries/latest-5.1/aarch64-linux-gnu/sysroot-linaro-glibc-gcc5.1-2015.08-aarch64-linux-gnu.tar.xz'
            description: |
              Sysroot to use - use local filesystem path, or formats interpretable by wget or scp/rsync.
        - string:
            name: COMPILER_FLAGS
            default: '-march=armv8-a'
            description: SPEC benchmarks built -O3 -fno-common, unless you override that here.
        - string:
            name: MAKE_FLAGS
            default: ''
            description: Flags to pass to make, when building the benchmark.
        - string:
            name: PUBLIC_KEY
            default: ''
            description: 'Public key for main instance jobs.'
        #TODO Remove this when we have the uinstance - at that point, we should be using the 'safe benchmarks' bundle stream
        - string:
            name: BUNDLE_STREAM
            default: '/anonymous/bernie.ogden/'
            description: 'Bundle stream for main instance jobs.'
        #TODO Remove this when we have the uinstance - at that point, we should be using the benchmarking branch
        - string:
            name: TESTDEF_REVISION
            default: bernie/benchmarking-uinstance-arbitrary
            description: Branch of abe to drive the run
        - string:
            name: TIMEOUT
            default: '604800'
            description: |
              Timeout, in seconds from when the LAVA job starts to run.
              Default is one week.
    wrappers:
        - timeout:
            timeout: 120
        - workspace-cleanup
    builders:
      - shell: |
          #!/bin/bash
          set -eux
          set -o pipefail

          #Process TARGET_CONFIG
          TARGET_CONFIG="${TARGET_CONFIG,,}"
          if test x"${TARGET_CONFIG%% *}" = xkvm; then #" - fix syntax highlighting
            TARGET_CONFIG=kvm
          fi

          #TODO Change to uinstance server and 'safe benchmarks' user, when they exist
          export LAVA_SERVER=192.168.16.2/RPC2/

          #TODO Hack until there's a proper host in the uinstance
          export HOST_DEVICE_TYPE=juno

          git clone --depth 1 -b ${TESTDEF_REVISION} https://git.linaro.org/toolchain/abe

          #Set variables for both post-build-lava and yaml-to-json
          tmpfile=`mktemp`
          bash -x ./abe/scripts/Benchmark.sh > "${tmpfile}"
          while read x; do
            export "$x"
            done < "${tmpfile}"
          rm "${tmpfile}"
          #TODO Force the appropriate branch
          #TODO Force the appropriate uinstance stream, when uinstance exists
          #Must be exported to be visible to Benchmark.sh - env vars that
          #happen to be job params are already exported, so don't need this

          #Parameters for post-build-lava
          cat << EOF > post_build_lava_parameters
          CUSTOM_JSON_URL=${BUILD_URL}/artifact/lava-jobdef.json

          #Server to dispatch to, as opposed to server where bundle stream is.
          #post-build-lava takes responsibility for specifying a protocol.
          LAVA_SERVER=${LAVA_SERVER}

          #DEVICE_TYPE to placate pbl - we don't actually use it
          DEVICE_TYPE=${TARGET_DEVICE_TYPE}
          EOF

          #Convert YAML to JSON
          git clone --depth 1 https://git.linaro.org/ci/lci-build-tools
          ./lci-build-tools/yaml-to-json.py \
            abe/config/bench/jobdefs/template-uinstance.yaml > lava-jobdef.json

    publishers:
      - archive:
          artifacts: lava-jobdef.json
      - trigger-parameterized-builds:
        - project: tcwg-post-build-lava
          condition: SUCCESS
          property-file: post_build_lava_parameters
      - email:
          recipients: 'bernie.ogden@linaro.org'