blob: 50438d5a0f3f436d2413df8a9abb2ccc9b92d2ba [file] [log] [blame]
# Auto generated by ./tcwg/generate-yamlfiles.sh from tcwg-benchmark.yaml.in and tcwg-benchmark/tcwg-benchmark.def. Do not edit.
#BEGIN: tcwg/default.yaml.inc
# -*- mode: Yaml -*-
- property:
name: default-properties
properties:
- authorization:
anonymous:
- job-read
- job-extended-read
everyone-flat:
- job-build
- job-cancel
# Allow users in tcwg-benchmark group (e.g., tcwg-buildslave)
# start and stop builds. We use this in tcwg_bmk* CI loops.
tcwg-benchmark:
- job-build
- job-cancel
- build-discarder:
days-to-keep: 20
- scm:
name: jenkins-scripts
scm:
- git:
url: https://gitlab.com/Linaro/tcwg/jenkins-scripts.git
refspec: +refs/heads/*:refs/remotes/origin/* +refs/changes/*:refs/changes/*
branches:
- $scripts_branch
basedir: jenkins-scripts
skip-tag: true
reference-repo: /home/tcwg-buildslave/snapshots-ref/jenkins-scripts.git
wipe-workspace: false
clean:
before: true
prune: true
- scm:
name: bmk-scripts
scm:
- git:
url: https://gitlab.com/Linaro/tcwg/bmk-scripts.git
refspec: +refs/heads/*:refs/remotes/origin/* +refs/changes/*:refs/changes/*
branches:
- $bmk_branch
basedir: bmk-scripts
skip-tag: true
reference-repo: /home/tcwg-buildslave/snapshots-ref/bmk-scripts.git
wipe-workspace: false
clean:
before: true
prune: true
#END: tcwg/default.yaml.inc
- job:
name: tcwg-benchmark
project-type: freestyle
defaults: global
properties:
- default-properties
parameters:
- choice:
name: bmk_hw
choices:
- apm
- sq
- stm32
- tk1
- tx1
- fx
- qc
description: 'Hardware to use for benchmarking'
- string:
name: toolchain_url
default: ''
description: |
Toolchain URL. Either http[s]://xxx.tar.xz,
rsync://machine:/path/bin/target-triplet-, or
ssh://machine/path/compiler. You need to specify 'builder'
setting below when using non-ssh:// toolchain_urls.
- choice:
name: toolchain_type
choices:
- auto
- gnu
- llvm
- string:
name: sysroot
default: 'tarball'
description: 'Rsync-friendly path to the sysroot to run against; use libs from toolchain_url tarball/rsync if "tarball"; use system libs if empty'
- string:
name: bench_list
default: 'all'
description: 'List of benchmarks to run. Can be for ex : all (i.e. spec2006), spec2017_speed, or coremark'
- string:
name: cflags
default: ''
description: 'CFLAGS to use'
- string:
name: ldflags
default: 'default'
description: 'LDFLAGS to use'
- choice:
name: extension
choices:
- default
- O2
- O3
- O2g
- O3g
- Ofast
- Os
description: 'Compilation profile'
- choice:
name: testmode
choices:
- verify
- build
- benchmark
description: 'Whether to just build or run full benchmarks'
- string:
name: iterations
default: '1'
description: 'Number of benchmark iterations'
- string:
name: results_dest
default: 'bkp-01.tcwglab:/home/tcwg-benchmark/results-@hw_tag@/tcwg-benchmark/@build_num@'
description: 'Destination where to push results..'
- bool:
name: forceinstall
default: 'false'
description: 'Force clean re-install of benchmark sources'
- choice:
name: run_profile
choices:
- parallel_0x4
- parallel
- serial
description: |
parallel_0x4 - Build benchmark in parallel (all CPU cores), Run benchmark in parallel (max 4)
parallel - Run benchmarks in parallel on all CPU cores.
serial - Run benchmarks serially on a single CPU core.
- choice:
name: board_selection
choices:
- balance
- one_board
- all_boards
description: |
balance - Distribute benchmarks across all available boards.
1board - Run all benchmarks on a single board.
allboards - Run all benchmarks on all boards (e.g., to check that all boards give the same performance result).
- choice:
name: image_arch
choices:
- arm64
- armhf
- amd64
description: 'Docker image architecture'
- bool:
name: reboot
default: 'false'
description: 'Reboot the board before building and running the benchmarks.'
- string:
name: displaytag
default: '$bmk_hw'
description: 'Tag to display in the Jenkins console, so that the build name is more meaningful'
- bool:
name: ignore_errors
default: 'false'
description: 'Ignore build errors as much as possible'
- string:
name: clean_older_than
default: '60'
description: 'Delete previous results older than X days (on board)'
- string:
name: builder
default: 'bmk_board'
description: |
Jenkins label or node to procure a builder from and the docker
image distro tag to use for the build environment.
This is needed only for non-ssh:// toolchain_urls.
Special value of bmk_board uses benchmarking board as the builder
- string:
name: scripts_branch
default: master
description: 'Jenkins-scripts branch to use'
- string:
name: bmk_branch
default: master
description: 'Bmk-scripts branch to use'
- node:
name: bmk_node
default-slaves:
- tcwg-bmk-bkp-01
allowed-slaves:
- tcwg-bmk-bkp-01
- tcwg-bmk-apm
- tcwg-bmk-sq
- tcwg-bmk-stm32
- tcwg-bmk-tk1
- tcwg-bmk-tx1
- tcwg-bmk-fx
- tcwg-bmk-qc
description: 'Bmk node; used internally, do not touch'
disabled: false
concurrent: true
display-name: 'TCWG Benchmark'
workspace: workspace/tcwg-benchmark-${NODE_NAME}_$EXECUTOR_NUMBER
scm:
- jenkins-scripts
- bmk-scripts
wrappers:
- timeout:
timeout: 1200
- timestamps
- ssh-agent-credentials:
users:
- 'tcwg-benchmark'
- build-name:
name: '#$BUILD_NUMBER-$displaytag ($bmk_hw:$image_arch)'
builders:
- shell:
command: |
#!/bin/bash
set -euf -o pipefail
set -x
rm -rf artifacts
mkdir -p artifacts/jenkins
has_perf_logs=yes
case "$bmk_hw:$image_arch" in
apm:arm64) hw_tag=apm_64 ;;
apm:armhf) hw_tag=apm_32 ;;
sq:arm64) hw_tag=sq_64 ;;
sq:armhf) hw_tag=sq_32 ;;
stm32:amd64) hw_tag=stm32; has_perf_logs=no ;;
tk1:armhf) hw_tag=tk1_32 ;;
tx1:arm64) hw_tag=tx1_64 ;;
tx1:armhf) hw_tag=tx1_32 ;;
fx:arm64) hw_tag=fx_64 ;;
fx:armhf) hw_tag=fx_32 ;;
qc:arm64) hw_tag=qc_64 ;;
qc:armhf) hw_tag=qc_32 ;;
*)
echo "ERROR: Unsupported bmk_hw:image_arch: $bmk_hw:$image_arch"
exit 1
;;
esac
results_dest=$(echo "$results_dest" | sed \
-e "s/@build_num@/$BUILD_NUMBER/g" \
-e "s/@hw_tag@/$hw_tag/g")
idle_boards="0"
total_boards="0"
for lock in $(set +f; ls -tr $HOME/boards/tcwg-bmk-$bmk_hw-*.lock); do
(
flock -en -E 124 9
) 9<$lock &
res=0 && wait $! || res=$?
total_boards=$(($total_boards + 1))
if [ $res = 124 ]; then
continue
fi
idle_boards=$(($idle_boards + 1))
done
n_boards=$((($idle_boards + $total_boards) / 2))
# Distribute benchmarks among idle boards.
if [ $n_boards -lt 1 ]; then
n_boards="1"
fi
count=1
while read -a bmks; do
cat > artifacts/bmk-$count-parameters <<EOF
bench_list=${bmks[@]}
displaytag=$BUILD_NUMBER+$count-$displaytag
bmk_node=tcwg-bmk-$bmk_hw
results_dest=$results_dest
EOF
count=$(($count+1))
done < <(./bmk-scripts/break-up-bmks.sh \
--bench_list "$bench_list" \
--bmk_hw "$bmk_hw" \
--n_boards "$n_boards" \
--run_profile "$run_profile" \
--board_selection "$board_selection")
cat > artifacts/bmk-info <<EOF
results_dest=$results_dest
hw_tag=$hw_tag
has_perf_logs=$has_perf_logs
EOF
- trigger-builds:
- project: tcwg-benchmark_backend
block: true
current-parameters: true
parameter-factories:
- factory: filebuild
file-pattern: artifacts/bmk-*-parameters
publishers:
- archive:
artifacts: 'artifacts/**'
latest-only: false
allow-empty: true
- email-ext:
recipients: |
${FILE,path="artifacts/jenkins/mail-recipients.txt"}
content-type: text
body: |
${FILE,path="artifacts/jenkins/mail-body.txt"}
failure: true
success: true
aborted: true
send-to:
- recipients
# checksum: a3049d4017eb6ebdfcf8a7c98f34ff82