#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. 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. 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'