#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
artifactDaysToKeep: 2
artifactNumToKeep: 1
block-downstream: true
properties:
- authorization:
anonymous:
- job-read
- job-extended-read
tcwg:
- job-build
- job-cancel
parameters:
- string:
name: LAVA_JOB_NAME
description: |
Name of job from LAVA's point-of view, in other words what you
will see in the LAVA UI.
If left blank, will be ${BENCHMARK}-${TARGET_CONFIG}-${TRIPLE}-jenkins.
- choice:
name: BENCHMARK
choices:
- Coremark-Pro
- CPU2000
- CPU2006
- fakebench
- string:
name: TARGET_CONFIG
description: |
Space-separated list of target configuration(s) to run on.
At time of writing, may be:
build/<host>/<target>
..git
dir).TOOLCHAIN
.PREBUILT
./usr/bin/gcc
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
my.name@my.server:location_of_my_toolchain
- string:
name: SYSROOT
description: |
Sysroot to use. Give local filesystem path, or formats interpretable by wget or scp/rsync.PREBUILT
, or to let toolchain use whatever sysroot it uses by default./home/foo/sysroots/sysroot_bar/
https://releases.linaro.org/components/toolchain/binaries/latest-5.1/arm-linux-gnueabihf/sysroot-linaro-glibc-gcc5.1-2015.08-arm-linux-gnueabihf.tar.xz
my.name@my.server:location_of_my_sysroot
- string:
name: COMPILER_FLAGS
description: |
Flags to pass to compiler when building the benchmark.PREBUILT
.-O3 -DFOO=\\\"FOO BAR\\\"
- string:
name: MAKE_FLAGS
description: |
Flags to pass to make when building the benchmark.PREBUILT
.-O3 FOO=\\\"FOO BAR\\\"
- string:
name: RUN_FLAGS
description: |
Flags to pass to benchmark framework at runtime.--size test --iterations 1 int
(run 1 iteration of the int suite using the test workload)
TIMEOUT=3600 HOST_DEVICE_TYPE=juno
.
wrappers:
- timeout:
timeout: 120
- workspace-cleanup
builders:
- shell: |
#!/bin/bash
set -eux
set -o pipefail
#Process TARGET_CONFIG
TARGET_CONFIG="${TARGET_CONFIG,,}"
#Process TRIPLE
if test x"${TRIPLE:-}" = x"(Derive from TOOLCHAIN)"; then
if test -z "${TOOLCHAIN:-}"; then
echo "Cannot derive TRIPLE from TOOLCHAIN if no TOOLCHAIN is given!" >&2
exit 1
fi
TRIPLE=
for y in aarch64-linux-gnu arm-linux-gnueabihf; do
if echo "${TOOLCHAIN}" | grep -q "${y}"; then
if test -z "${TRIPLE:-}"; then
TRIPLE="${y}"
else
echo "Cannot derive unique TRIPLE from ambiguous TOOLCHAIN '${TOOLCHAIN}'" >&2
exit 1
fi
fi
done
#If TRIPLE is still empty then it means 'Native', which is what we want
elif test x"${TRIPLE:-}" = x"(Native)"; then
TRIPLE=
fi
#Defaults that user is unlikely to want to twiddle
#TODO: If benchmarking ever merges back to mainline abe, set this to a suitable branch
export TESTDEF_REVISION=benchmarking
for x in ${Overrides:-}; do
export "${x}"
done
#Force this _after_ overrides
export LAVA_SERVER=192.168.16.2/RPC2/
export BUNDLE_SERVER=lava.tcwglab/RPC2/
#Process LAVA_JOB_NAME
#Have to do this after overrides in case one of the inputs is overridden
#If LAVA_JOB_NAME itself was overridden then it will not be touched.
if test -z "${LAVA_JOB_NAME:-}"; then
export LAVA_JOB_NAME="${BENCHMARK:-}_${TARGET_CONFIG:-}_${TRIPLE:-native}_jenkins"
fi
git clone --depth 1 -b ${TESTDEF_REVISION} https://git.linaro.org/toolchain/abe
#Generate YAML, which will be converted to JSON
yaml=`mktemp`
bash -x ./abe/scripts/Benchmark.sh > "${yaml}"
#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=dummy-ssh
EOF
#Convert YAML to JSON
git clone --depth 1 https://git.linaro.org/ci/lci-build-tools
./lci-build-tools/yaml-to-json.py "${yaml}" > lava-jobdef.json
rm "${yaml}"
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'