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