#See http://docs.openstack.org/infra/jenkins-job-builder/genindex.html
- job:
name: tcwg-benchmark-monthly
project-type: freestyle
node: master
display-name: 'TCWG BBB Benchmark Monthly'
description: 'Monthly release benchmarking'
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: PREBUILT_32
description: |
A prebuilt (32-bit) 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).
Leave blank if you have supplied TOOLCHAIN_32
.
If this option is given, no build will be performed.
- string:
name: TOOLCHAIN_32
description: |
32-bit toolchain to use. Give local filesystem path, or formats interpretable by wget or scp/rsync.
Leave blank if you have supplied PREBUILT_32
.
Examples
/usr/bin/gcc
https://releases.linaro.org/components/toolchain/binaries/latest-5.1/arm-linux-gnueabihf/gcc-linaro-5.1-2015.08-x86_64_arm-linux-gnueabihf.tar.xz
my.name@my.server:location_of_my_toolchain
- string:
name: SYSROOT_32
description: |
32-bit sysroot to use. Give local filesystem path, or formats interpretable by wget or scp/rsync.
Leave blank if you have supplied PREBUILT_32
, or to let toolchain use whatever sysroot it uses by default.
For release benchmarking, should be set to our libc if you have supplied TOOLCHAIN_32
, or left blank if you have supplied PREBUILT_32
.
Examples
/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: PREBUILT_64
description: |
A prebuilt (64-bit) 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).
Leave blank if you have supplied TOOLCHAIN_64
.
If this option is given, no build will be performed.
- string:
name: TOOLCHAIN_64
description: |
64-bit toolchain to use. Give local filesystem path, or formats interpretable by wget or scp/rsync.
Leave blank if you have supplied PREBUILT_64
.
Examples
/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_64
description: |
64-bit sysroot to use. Give local filesystem path, or formats interpretable by wget or scp/rsync.
Leave blank if you have supplied PREBUILT_64
, or to let toolchain use whatever sysroot it uses by default.
For release benchmarking, should be set to our libc if you have supplied TOOLCHAIN_64
, or left blank if you have supplied PREBUILT_64
.
Examples
/home/foo/sysroots/sysroot_bar/
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
my.name@my.server:location_of_my_sysroot
- string:
name: Overrides
description: |
Key=Value arguments, for expert users.
Separate with whitespace, for example TIMEOUT=3600 HOST_DEVICE_TYPE=juno
.
For testing purposes only.
Note that this job is structured such that some variables cannot
be overridden.
Does not cope well if the Value side of Key=Value contains spaces.
wrappers:
- timeout:
timeout: 120
- workspace-cleanup
builders:
- shell: |
#!/bin/bash
set -eux
set -o pipefail
#TODO: If benchmarking ever merges back to mainline abe, set this to a suitable branch
export TESTDEF_REVISION=benchmarking
export BUNDLE_STREAM='/anonymous/monthly/'
export BENCHMARK=CPU2006
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/
git clone --depth 1 -b ${TESTDEF_REVISION} https://git.linaro.org/toolchain/abe
git clone --depth 1 https://git.linaro.org/ci/lci-build-tools
for TARGET_CONFIG in big:juno-a57 little:juno-a53; do
export TARGET_CONFIG
for bitness in 64 32; do
export LAVA_JOB_NAME="Monthly release benchmark (AArch${bitness} on ${TARGET_CONFIG})"
if test -n "${Overrides:+x}"; then
export LAVA_JOB_NAME="${LAVA_JOB_NAME}. With overrides: ${Overrides}."
fi
#Run all of this in a subshell so that we enter each loop with
#environment in the same state.
(
indirect="PREBUILT_${bitness}"
export PREBUILT="${!indirect:-}"
indirect="TOOLCHAIN_${bitness}"
export TOOLCHAIN=${!indirect:-}
indirect="SYSROOT_${bitness}"
export SYSROOT="${!indirect:-}"
unset indirect
if test ${bitness} -eq 32; then
export TRIPLE=arm-linux-gnueabihf
else
export TRIPLE=aarch64-linux-gnu
fi
#Generate YAML, which will be converted to JSON
yaml=`mktemp`
bash -x ./abe/scripts/Benchmark.sh > "${yaml}"
#Must be exported to be visible to yaml-to-json.py - 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_${TARGET_CONFIG}_${bitness}
CUSTOM_JSON_URL=${BUILD_URL}/artifact/lava-jobdef_${TARGET_CONFIG}_${bitness}.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
./lci-build-tools/yaml-to-json.py "${yaml}" > "lava-jobdef_${TARGET_CONFIG}_${bitness}.json"
rm "${yaml}"
)
done
done
publishers:
- archive:
artifacts: lava-jobdef_*.json
- trigger-parameterized-builds:
- project: tcwg-post-build-lava
condition: SUCCESS
property-file: post_build_lava_parameters_big:juno-a57_64
- trigger-parameterized-builds:
- project: tcwg-post-build-lava
condition: SUCCESS
property-file: post_build_lava_parameters_big:juno-a57_32
- trigger-parameterized-builds:
- project: tcwg-post-build-lava
condition: SUCCESS
property-file: post_build_lava_parameters_little:juno-a53_64
- trigger-parameterized-builds:
- project: tcwg-post-build-lava
condition: SUCCESS
property-file: post_build_lava_parameters_little:juno-a53_32
- email:
recipients: 'bernie.ogden@linaro.org'