#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:
Where 'KVM' is an x86. - choice: name: TRIPLE choices: - (Derive from TOOLCHAIN) - (Native) - arm-linux-gnueabihf - aarch64-linux-gnu description: | A triple describing the target (and its execution state). - string: name: PREBUILT description: | A prebuilt benchmark tarball as produced by abe or direct make invocation. Leave blank if you have supplied TOOLCHAIN.
If this option is given, no build will be performed. - string: name: TOOLCHAIN description: | Toolchain to use. Give local filesystem path, or formats interpretable by wget or scp/rsync.
Leave blank if you have supplied PREBUILT.

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 description: | Sysroot to use. Give local filesystem path, or formats interpretable by wget or scp/rsync.
Leave blank if you have supplied PREBUILT, or to let toolchain use whatever sysroot it uses by default.

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: COMPILER_FLAGS description: | Flags to pass to compiler when building the benchmark.
Leave blank if you have supplied PREBUILT.
Nested quotes must be triple-escaped, for example:
-O3 -DFOO=\\\"FOO BAR\\\" - string: name: MAKE_FLAGS description: | Flags to pass to make when building the benchmark.
Leave blank if you have supplied PREBUILT.
Nested quotes must be triple-escaped, for example:
-O3 FOO=\\\"FOO BAR\\\" - string: name: RUN_FLAGS description: | Flags to pass to benchmark framework at runtime.
SPEC Example
--size test --iterations 1 int (run 1 iteration of the int suite using the test workload)
- string: name: BUNDLE_STREAM default: '/anonymous/benchmark/' description: | Stream to dispatch results bundles to.
If planning to run a series of related benchmarks, you might want to direct them all to the same stream. This stream can be created with lava-tool and managed in the LAVA web interface. It must be accessible to the user 'benchmark'. If you're dispatching the benchmark from here, it should be fine to make the stream accessible to everyone. - string: name: Overrides description: | Key=Value arguments, for expert users.
Separate with whitespace, for example 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'