diff options
author | Laurent Alfonsi <laurent.alfonsi@linaro.org> | 2022-07-16 07:44:34 +0200 |
---|---|---|
committer | Laurent Alfonsi <laurent.alfonsi@linaro.org> | 2022-07-16 07:44:34 +0200 |
commit | 49b9ae15793b0676e9564d3691477edc2b698b36 (patch) | |
tree | 05a08d2c85ab5839aada8db81e624c83c8947e29 | |
parent | 3690617df2b3eacb7776c30bcc8321e89c246e2c (diff) |
tcwg_bmk_ci*: Disable spec2k6 test for now to reduce the pressure on fx700
Change-Id: Icaa11eb6c453c0bfab57e524130070762bd5b0ad
-rw-r--r-- | tcwg_bmk_ci/tcwg_bmk_ci_fujitsu_gnu.def | 1 | ||||
-rw-r--r-- | tcwg_bmk_ci/tcwg_bmk_ci_fujitsu_llvm.def | 1 | ||||
-rw-r--r-- | tcwg_bmk_ci_fujitsu_gnu.yaml | 3 | ||||
-rw-r--r-- | tcwg_bmk_ci_fujitsu_gnu_spec2k6.yaml | 609 | ||||
-rw-r--r-- | tcwg_bmk_ci_fujitsu_llvm.yaml | 3 | ||||
-rw-r--r-- | tcwg_bmk_ci_fujitsu_llvm_spec2k6.yaml | 623 |
6 files changed, 1234 insertions, 6 deletions
diff --git a/tcwg_bmk_ci/tcwg_bmk_ci_fujitsu_gnu.def b/tcwg_bmk_ci/tcwg_bmk_ci_fujitsu_gnu.def index 1f3536a543..efdecdd8b3 100644 --- a/tcwg_bmk_ci/tcwg_bmk_ci_fujitsu_gnu.def +++ b/tcwg_bmk_ci/tcwg_bmk_ci_fujitsu_gnu.def @@ -6,6 +6,5 @@ -v RR=tcwg_bmk -v TOOLCHAIN=gnu -v BMK=cpu2017 --v BMK=spec2k6 -v JOBNAME_EXT=_fujitsu -v VIEW=tcwg_bmk_ci_fujitsu diff --git a/tcwg_bmk_ci/tcwg_bmk_ci_fujitsu_llvm.def b/tcwg_bmk_ci/tcwg_bmk_ci_fujitsu_llvm.def index d01cbf66cc..81a5ba7ea3 100644 --- a/tcwg_bmk_ci/tcwg_bmk_ci_fujitsu_llvm.def +++ b/tcwg_bmk_ci/tcwg_bmk_ci_fujitsu_llvm.def @@ -7,6 +7,5 @@ -v RR=tcwg_bmk -v TOOLCHAIN=llvm -v BMK=cpu2017 --v BMK=spec2k6 -v JOBNAME_EXT=_fujitsu -v VIEW=tcwg_bmk_ci_fujitsu diff --git a/tcwg_bmk_ci_fujitsu_gnu.yaml b/tcwg_bmk_ci_fujitsu_gnu.yaml index 2bf4ac5ddd..cdb5640188 100644 --- a/tcwg_bmk_ci_fujitsu_gnu.yaml +++ b/tcwg_bmk_ci_fujitsu_gnu.yaml @@ -13,7 +13,6 @@ toolchain_name: gnu components: binutils gcc glibc linux bmk: - - spec2k6 - cpu2017 cflags: - Os @@ -607,4 +606,4 @@ job_suffix: '-tcwg_bmk_{hw}-gnu-{toolchain_ver}-{target}-{bmk}-{cflags}' publishers: - bisect-publishers -# checksum: 71bae2463400d2abcf2fff0001eef504 +# checksum: 67c8504366ec2248d0477189726cce13 diff --git a/tcwg_bmk_ci_fujitsu_gnu_spec2k6.yaml b/tcwg_bmk_ci_fujitsu_gnu_spec2k6.yaml new file mode 100644 index 0000000000..ff666bded5 --- /dev/null +++ b/tcwg_bmk_ci_fujitsu_gnu_spec2k6.yaml @@ -0,0 +1,609 @@ +# Auto generated by ./tcwg/generate-yamlfiles.sh from tcwg_bmk_ci.yaml.in and tcwg_bmk_ci/tcwg_bmk_ci_fujitsu_gnu.def. Do not edit. +# Beware: git branch names need the 'refs/heads/' prefix, while tags need 'refs/tags/' +- project: + name: tcwg_bmk_ci_fujitsu_gnu + binutils_url: git://sourceware.org/git/binutils-gdb.git + gcc_url: https://github.com/gcc-mirror/gcc.git + linux_url: https://git.linaro.org/kernel-org/linux-stable.git + linux_branch: refs/heads/linux-rolling-stable + glibc_url: git://sourceware.org/git/glibc.git + hw: + - fx: + target: aarch64 + toolchain_name: gnu + components: binutils gcc glibc linux + bmk: + - spec2k6 + cflags: + - Os + - Os_LTO + - O2 + - O2_LTO + - O3 + - O3_LTO + jobs: + - 'tcwg_bmk_ci_fujitsu_gnu-master' + exclude: + + - hw: fx + cflags: Os + - hw: fx + cflags: Os_LTO + - hw: fx + cflags: Oz + - hw: fx + cflags: Oz_LTO + - hw: fx + cflags: O2_LTO + - hw: fx + cflags: O3_LTO + + - hw: sq + cflags: Os_LTO + - hw: sq + cflags: Oz + - hw: sq + cflags: Oz_LTO + - hw: sq + cflags: O2 + - hw: sq + cflags: O2_LTO + - hw: sq + cflags: O3 + - hw: sq + cflags: O3_LTO + + - hw: apm + cflags: O2 + - hw: apm + cflags: O2_LTO + - hw: apm + cflags: O3 + - hw: apm + cflags: O3_LTO + + - hw: tk1 + cflags: Os + - hw: tk1 + cflags: Os_LTO + - hw: tk1 + cflags: Oz + - hw: tk1 + cflags: Oz_LTO + + - hw: tx1 + cflags: Os + - hw: tx1 + cflags: Os_LTO + - hw: tx1 + cflags: Oz + - hw: tx1 + cflags: Oz_LTO + +- job-group: + name: tcwg_bmk_ci_fujitsu_gnu-master + toolchain_ver: master + binutils_branch: refs/heads/master + gcc_branch: refs/heads/master + glibc_branch: refs/heads/master + distro: lts + cron_schedule: 'H H H/3 * *' + jobs: + - 'tcwg_bmk_ci_fujitsu_gnu-build-tcwg_bmk_{hw}-gnu-{toolchain_ver}-{target}-{bmk}-{cflags}' + - 'tcwg_bmk_ci_fujitsu_gnu-bisect-tcwg_bmk_{hw}-gnu-{toolchain_ver}-{target}-{bmk}-{cflags}' + + + +- view: + name: tcwg_bmk_ci_fujitsu + view-type: list + regex: 'tcwg_bmk_ci_fujitsu.*-build-.*' + +#BEGIN: tcwg/round-robin.yaml.inc +# -*- mode: Yaml -*- + +#BEGIN: tcwg/default.yaml.inc +# -*- mode: Yaml -*- + +- property: + name: default-properties + properties: + - authorization: + anonymous: + - job-read + - job-extended-read + linaro: + - job-build + - job-cancel + - build-discarder: + days-to-keep: 30 + num-to-keep: 30 + +- scm: + name: jenkins-scripts + scm: + - git: + url: https://git.linaro.org/toolchain/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://git.linaro.org/toolchain/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 + +- parameter: + name: default-parameters + parameters: + - string: + name: ci_project + default: '{ci_project}' + description: "CI project ID; used as namespace for git branches and selects benchmarking hardware" + - string: + name: ci_config + default: '{ci_config}' + description: "CI configuration ID; used as name of git branches and selects build flags" + - string: + name: extra_build_params + default: "" + description: "Extra parameters to pass to the build script; can be used to override settings extracted from ci_project/ci_config" + - string: + name: mail_recipients + default: default + description: "Comma-separated list of email recipients" + - string: + name: distro + default: '{distro}' + description: 'Distro image to use' + - string: + name: scripts_branch + default: master + description: 'Scripts revision to use' + - string: + name: bmk_branch + default: master + description: 'Benchmark scripts revision to use' + +- parameter: + name: component-parameters + parameters: + - string: + name: '{component}_git' + default: '{default_git}' + description: "{component} git_url#branch/sha1 to build, or 'default', 'baseline' or 'jenkins-scm'" + +- parameter: + name: build-parameters + parameters: + - component-parameters: + component: binutils + default_git: '{default_git}' + - component-parameters: + component: gcc + default_git: '{default_git}' + - component-parameters: + component: glibc + default_git: '{default_git}' + - component-parameters: + component: linux + default_git: '{default_git}' + - choice: + name: update_baseline + choices: + - update + - reset + - init + - push + - ignore + description: "What to do with baseline in this build" + - default-parameters: + ci_project: '{ci_project}' + ci_config: '{ci_config}' + distro: '{distro}' + +# Beware: git branch names need the 'refs/heads/' prefix while tags +# need 'refs/tags/'. +- scm: + name: component-scm + scm: + - git: + url: '{url}' + branches: + - '{branch}' + basedir: '{component}' + skip-tag: true + reference-repo: '/home/tcwg-buildslave/snapshots-ref/{reference}' + wipe-workspace: false + clean: + before: true + prune: true + +# SCMs must start with jenkins-scripts and then be ordered alphabetically. +# Same alphabetical order must be followed in .def files. The reason behind +# this is that jenkins sets $GIT_COMMIT to sha1 of jenkins-scripts, and then +# sets $GIT_COMMIT_1, $GIT_COMMIT_2, etc. to sha1s of component SCM /in the +# order that they are declared here/. +- scm: + name: build-scms + scm: + - jenkins-scripts + - component-scm: + component: binutils + url: '{binutils_url}' + branch: '{binutils_branch}' + reference: binutils-gdb.git + - component-scm: + component: gcc + url: '{gcc_url}' + branch: '{gcc_branch}' + reference: gcc.git + - component-scm: + component: glibc + url: '{glibc_url}' + branch: '{glibc_branch}' + reference: glibc.git + - component-scm: + component: linux + url: '{linux_url}' + branch: '{linux_branch}' + reference: linux.git + - bmk-scripts + +- wrapper: + name: build-wrappers + wrappers: + - timeout: + timeout: '{timeout}' + - timestamps + - ssh-agent-credentials: + # tcwg-buildslave user id + users: + - 'e0958a95-204f-4c14-a66c-5e2be6c5d50a' + +- builder: + name: trigger-followup-builds + builders: + - build-name-setter: + name: 'artifacts/jenkins/build-name' + file: true + - conditional-step: + # Only run if above succeeded + # (a failed build is indicated by artifacts/failed) + condition-kind: current-status + steps: + - shell: | + #!/bin/bash + set -ex + for i in artifacts/trigger-build-* artifacts/trigger-bisect; do + if [ -f $i ]; then + echo "ci_project=$ci_project" >> $i + echo "ci_config=$ci_config" >> $i + echo "mail_recipients=$mail_recipients" >> $i + echo "distro=$distro" >> $i + echo "scripts_branch=$scripts_branch" >> $i + echo "bmk_branch=$bmk_branch" >> $i + fi + done + - trigger-builds: + - project: '{rr_project}-build{job_suffix}' + parameter-factories: + - factory: filebuild + file-pattern: artifacts/trigger-build-* + - project: '{rr_project}-bisect{job_suffix}' + property-file: artifacts/trigger-bisect + - shell: + command: | + #!/bin/bash + if [ -f artifacts/failed ]; then + exit $(cat artifacts/failed) + fi + unstable-return: 125 + +- builder: + name: run-build + builders: + - shell: + command: | + #!/bin/bash + set -ex + # Delete artifacts now to avoid re-using stale artifacts if + # below docker-run.sh fails to start up a container. + rm -rf artifacts/ + mkdir -p artifacts/jenkins + + dryruncmd="" + + # Skip SCM-triggered builds if there are other builds in + # the queue. We need to process all pending bisection-triggered + # builds before fetching a new batch of upstream changes. + if [ x"${{BUILD_CAUSE_SCMTRIGGER-false}}" = x"true" ]; then + inQueue=$(curl -s "${{JOB_URL}}api/xml?tree=inQueue" \ + | sed -e "s#.*<inQueue>\(.*\)</inQueue>.*#\1#") + if [ x"$inQueue" = x"true" ]; then + dryruncmd="echo SKIPPING SCM BUILD:" + touch artifacts/jenkins/skip-scm-build + fi + fi + + build_name="#$BUILD_NUMBER" + branch_opt="" + # 1 to skip jenkins-scripts + i=1 + for c in {components}; do + eval "g=\$$$${{c}}_git" + if [ x"$g" = x"default" ]; then + if [ x"${{BUILD_CAUSE_SCMTRIGGER-false}}" = x"true" ]; then + g="jenkins-scm" + else + g="baseline" + fi + fi + if [ x"$g" = x"jenkins-scm" ]; then + eval "g=\$GIT_URL_$i#\$GIT_COMMIT_$i" + fi + i=$(($i+1)) + if [ x"$g" != x"baseline" ]; then + build_name="$build_name-$c" + branch_opt="$branch_opt ==rr[${{c}}_git] $g" + fi + done + + $dryruncmd \ + ./jenkins-scripts/docker-run.sh \ + --distro $distro \ + --ssh_info true \ + -- \ + ./jenkins-scripts/{build_script} \ + %% artifacts/jenkins/manifest.sh \ + ==rr[ci_project] $ci_project \ + ==rr[ci_config] $ci_config \ + $extra_build_params \ + --bmk_branch "$bmk_branch" \ + --scripts_branch "$scripts_branch" \ + $branch_opt \ + ==rr[mode] "jenkins-full" \ + ==rr[update_baseline] "$update_baseline" \ + --BUILD_URL "$BUILD_URL" & + res=0 && wait $! || res=$? + + if [ $res != 0 ]; then + echo $res > artifacts/failed + fi + + if [ -f artifacts/jenkins/skip-scm-build ]; then + build_name="$build_name-skip-scm-build" + fi + if [ -f artifacts/results ]; then + build_name="$build_name-R$(tail -n1 artifacts/results)" + fi + if [ x"$update_baseline" != x"update" ]; then + build_name="$build_name-$update_baseline" + fi + if [ -f artifacts/trigger-bisect ]; then + build_name="$build_name-trigger-bisect" + fi + echo "$build_name" > artifacts/jenkins/build-name + + # If we didn't run the docker command + if [ -n "$dryruncmd" ]; then + # Mark build unstable aka a skipped config + exit 125 + fi + unstable-return: 125 + - trigger-followup-builds: + rr_project: '{rr_project}' + job_suffix: '{job_suffix}' + +- publisher: + name: build-publishers + publishers: + - archive: + artifacts: 'artifacts/**' + latest-only: false + +- parameter: + name: bisect-parameters + parameters: + - string: + name: current_project + default: "" + description: "Project to bisect" + - string: + name: bad_git + default: "" + description: "Bad git_url#branch/SHA1" + - file: + name: jenkins-scripts/replay_log + description: "Replay part of bisect using provided bisect log" + - default-parameters: + ci_project: '{ci_project}' + ci_config: '{ci_config}' + distro: '{distro}' + +- wrapper: + name: bisect-wrappers + wrappers: + - build-wrappers: + timeout: '{timeout}' + - credentials-binding: + - text: + credential-id: TCWG_JIRA_TOKEN + variable: TCWG_JIRA_TOKEN + +- builder: + name: run-bisect + builders: + - shell: + command: | + #!/bin/bash + set -ex + # Delete artifacts now to avoid re-using stale artifacts if + # below docker-run.sh fails to start up a container. + rm -rf artifacts/ + mkdir -p artifacts/jenkins + build_name="#$BUILD_NUMBER-$current_project" + echo "$build_name" > artifacts/jenkins/build-name + # artifacts/jenkins/mail-*.txt will be overwritten in successful builds. + echo "maxim.kuvyrkov@linaro.org, laurent.alfonsi@linaro.org" > artifacts/jenkins/mail-recipients.txt + echo "[TCWG CI] Bisect failed" > artifacts/jenkins/mail-subject.txt + echo "Bisect $BUILD_URL failed" > artifacts/jenkins/mail-body.txt + + ./jenkins-scripts/docker-run.sh \ + --distro $distro \ + --ssh_info true \ + -- \ + ./jenkins-scripts/round-robin-bisect.sh \ + %% artifacts/manifests/bisect.sh \ + --BUILD_URL "$BUILD_URL" \ + --current_project "$current_project" \ + --bad_git "$bad_git" \ + --replay_log "$(pwd)/jenkins-scripts/replay_log" \ + --build_script "./jenkins-scripts/{build_script}" \ + __TCWG_JIRA_TOKEN "$TCWG_JIRA_TOKEN" \ + -- \ + ==rr[ci_project] $ci_project \ + ==rr[ci_config] $ci_config \ + $extra_build_params \ + --bmk_branch "$bmk_branch" \ + --scripts_branch "$scripts_branch" & + res=0 && wait $! || res=$? + + if [ $res != 0 ]; then + echo $res > artifacts/failed + fi + + if [ x"$mail_recipients" != x"default" ]; then + echo "$mail_recipients" > artifacts/jenkins/mail-recipients.txt + fi + unstable-return: 125 + - trigger-followup-builds: + rr_project: '{rr_project}' + job_suffix: '{job_suffix}' + +- publisher: + name: bisect-publishers + publishers: + - build-publishers + - email-ext: + # Strangely, we no longer need to double-{ ${FILE} macro in + # recipients and body sections. They appear to bypass + # job-template expansion. + recipients: | + ${FILE,path="artifacts/jenkins/mail-recipients.txt"} + subject: | + ${FILE,path="artifacts/jenkins/mail-subject.txt"} + content-type: text + body: | + ${FILE,path="artifacts/jenkins/mail-body.txt"} + failure: true + success: true + aborted: true + send-to: + - recipients +#END: tcwg/round-robin.yaml.inc + +- job-template: + name: tcwg_bmk_ci_fujitsu_gnu-build-tcwg_bmk_{hw}-gnu-{toolchain_ver}-{target}-{bmk}-{cflags} + project-type: freestyle + defaults: global + properties: + - default-properties + - build-blocker: + blocking-jobs: + - "tcwg_bmk_ci_fujitsu_gnu-bisect-tcwg_bmk_{hw}-gnu-{toolchain_ver}-{target}-{bmk}-{cflags}" + queue-scanning: 'ALL' + parameters: + - build-parameters: + ci_project: 'tcwg_bmk_gnu_{hw}' + ci_config: 'gnu-{toolchain_ver}-{target}-{bmk}-{cflags}' + default_git: 'default' + distro: '{distro}' + disabled: true + node: tcwg-x86_64-build_bmk + concurrent: false + display-name: 'TCWG Build tcwg_bmk_{hw}/gnu-{toolchain_ver}-{target}-{bmk}-{cflags}' + workspace: workspace/tcwg_bmk_$EXECUTOR_NUMBER + scm: + - build-scms: + binutils_url: '{binutils_url}' + binutils_branch: '{binutils_branch}' + gcc_url: '{gcc_url}' + gcc_branch: '{gcc_branch}' + linux_url: '{linux_url}' + linux_branch: '{linux_branch}' + glibc_url: '{glibc_url}' + glibc_branch: '{glibc_branch}' + triggers: + - pollscm: + cron: '{cron_schedule}' + wrappers: + - build-wrappers: + timeout: 840 + builders: + - run-build: + build_script: 'tcwg_bmk-build.sh' + components: '{components}' + rr_project: 'tcwg_bmk_ci_fujitsu_gnu' + job_suffix: '-tcwg_bmk_{hw}-gnu-{toolchain_ver}-{target}-{bmk}-{cflags}' + publishers: + - build-publishers + +- job-template: + name: tcwg_bmk_ci_fujitsu_gnu-bisect-tcwg_bmk_{hw}-gnu-{toolchain_ver}-{target}-{bmk}-{cflags} + project-type: freestyle + defaults: global + properties: + - default-properties + - build-blocker: + # Run at most 1 bisect job for all configurations. + # Bisect jobs can easily run for 5+ hours, and a few of them + # can hog the entire TCWG build farm for a long time. Since + # same regression tends to appear in multiple configurations, + # run bisections for all configurations in-order. + blocking-jobs: + - "tcwg_bmk_ci_fujitsu_gnu-bisect-tcwg_bmk_{hw}-gnu-.*" + queue-scanning: 'BUILDABLE' + parameters: + - bisect-parameters: + ci_project: 'tcwg_bmk_gnu_{hw}' + ci_config: 'gnu-{toolchain_ver}-{target}-{bmk}-{cflags}' + distro: '{distro}' + disabled: true + node: tcwg-x86_64-build_bmk + concurrent: false + display-name: 'TCWG Bisect tcwg_bmk_{hw}/gnu-{toolchain_ver}-{target}-{bmk}-{cflags}' + workspace: workspace/tcwg_bmk_$EXECUTOR_NUMBER + scm: + - jenkins-scripts + - bmk-scripts + wrappers: + - bisect-wrappers: + timeout: 2880 + builders: + - run-bisect: + build_script: 'tcwg_bmk-build.sh' + rr_project: 'tcwg_bmk_ci_fujitsu_gnu' + job_suffix: '-tcwg_bmk_{hw}-gnu-{toolchain_ver}-{target}-{bmk}-{cflags}' + publishers: + - bisect-publishers +# checksum: 71bae2463400d2abcf2fff0001eef504 diff --git a/tcwg_bmk_ci_fujitsu_llvm.yaml b/tcwg_bmk_ci_fujitsu_llvm.yaml index 43b13fafd4..dde52a755c 100644 --- a/tcwg_bmk_ci_fujitsu_llvm.yaml +++ b/tcwg_bmk_ci_fujitsu_llvm.yaml @@ -14,7 +14,6 @@ toolchain_name: llvm components: binutils gcc glibc linux llvm bmk: - - spec2k6 - cpu2017 cflags: - Os @@ -621,4 +620,4 @@ job_suffix: '-tcwg_bmk_{hw}-llvm-{toolchain_ver}-{target}-{bmk}-{cflags}' publishers: - bisect-publishers -# checksum: fedc61dabd3df5582bbb2a7f975dae8c +# checksum: f9a9ba0f905b616a8796e26e41228d66 diff --git a/tcwg_bmk_ci_fujitsu_llvm_spec2k6.yaml b/tcwg_bmk_ci_fujitsu_llvm_spec2k6.yaml new file mode 100644 index 0000000000..16b843b262 --- /dev/null +++ b/tcwg_bmk_ci_fujitsu_llvm_spec2k6.yaml @@ -0,0 +1,623 @@ +# Auto generated by ./tcwg/generate-yamlfiles.sh from tcwg_bmk_ci.yaml.in and tcwg_bmk_ci/tcwg_bmk_ci_fujitsu_llvm.def. Do not edit. +# Beware: git branch names need the 'refs/heads/' prefix, while tags need 'refs/tags/' +- project: + name: tcwg_bmk_ci_fujitsu_llvm + binutils_url: git://sourceware.org/git/binutils-gdb.git + gcc_url: https://github.com/gcc-mirror/gcc.git + linux_url: https://git.linaro.org/kernel-org/linux-stable.git + linux_branch: refs/heads/linux-rolling-stable + glibc_url: git://sourceware.org/git/glibc.git + llvm_url: https://github.com/llvm/llvm-project.git + hw: + - fx: + target: aarch64 + toolchain_name: llvm + components: binutils gcc glibc linux llvm + bmk: + - spec2k6 + cflags: + - Os + - Os_LTO + - O2 + - O2_LTO + - O3 + - O3_LTO + - Oz + - Oz_LTO + jobs: + - 'tcwg_bmk_ci_fujitsu_llvm-master' + exclude: + + - hw: fx + cflags: Os + - hw: fx + cflags: Os_LTO + - hw: fx + cflags: Oz + - hw: fx + cflags: Oz_LTO + - hw: fx + cflags: O2_LTO + - hw: fx + cflags: O3_LTO + + - hw: sq + cflags: Os_LTO + - hw: sq + cflags: Oz + - hw: sq + cflags: Oz_LTO + - hw: sq + cflags: O2 + - hw: sq + cflags: O2_LTO + - hw: sq + cflags: O3 + - hw: sq + cflags: O3_LTO + + - hw: apm + cflags: O2 + - hw: apm + cflags: O2_LTO + - hw: apm + cflags: O3 + - hw: apm + cflags: O3_LTO + + - hw: tk1 + cflags: Os + - hw: tk1 + cflags: Os_LTO + - hw: tk1 + cflags: Oz + - hw: tk1 + cflags: Oz_LTO + + - hw: tx1 + cflags: Os + - hw: tx1 + cflags: Os_LTO + - hw: tx1 + cflags: Oz + - hw: tx1 + cflags: Oz_LTO + +- job-group: + name: tcwg_bmk_ci_fujitsu_llvm-master + toolchain_ver: master + binutils_branch: refs/heads/master + gcc_branch: refs/heads/master + glibc_branch: refs/heads/master + llvm_branch: refs/heads/main + distro: lts + cron_schedule: 'H H H/3 * *' + jobs: + - 'tcwg_bmk_ci_fujitsu_llvm-build-tcwg_bmk_{hw}-llvm-{toolchain_ver}-{target}-{bmk}-{cflags}' + - 'tcwg_bmk_ci_fujitsu_llvm-bisect-tcwg_bmk_{hw}-llvm-{toolchain_ver}-{target}-{bmk}-{cflags}' + + + +- view: + name: tcwg_bmk_ci_fujitsu + view-type: list + regex: 'tcwg_bmk_ci_fujitsu.*-build-.*' + +#BEGIN: tcwg/round-robin.yaml.inc +# -*- mode: Yaml -*- + +#BEGIN: tcwg/default.yaml.inc +# -*- mode: Yaml -*- + +- property: + name: default-properties + properties: + - authorization: + anonymous: + - job-read + - job-extended-read + linaro: + - job-build + - job-cancel + - build-discarder: + days-to-keep: 30 + num-to-keep: 30 + +- scm: + name: jenkins-scripts + scm: + - git: + url: https://git.linaro.org/toolchain/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://git.linaro.org/toolchain/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 + +- parameter: + name: default-parameters + parameters: + - string: + name: ci_project + default: '{ci_project}' + description: "CI project ID; used as namespace for git branches and selects benchmarking hardware" + - string: + name: ci_config + default: '{ci_config}' + description: "CI configuration ID; used as name of git branches and selects build flags" + - string: + name: extra_build_params + default: "" + description: "Extra parameters to pass to the build script; can be used to override settings extracted from ci_project/ci_config" + - string: + name: mail_recipients + default: default + description: "Comma-separated list of email recipients" + - string: + name: distro + default: '{distro}' + description: 'Distro image to use' + - string: + name: scripts_branch + default: master + description: 'Scripts revision to use' + - string: + name: bmk_branch + default: master + description: 'Benchmark scripts revision to use' + +- parameter: + name: component-parameters + parameters: + - string: + name: '{component}_git' + default: '{default_git}' + description: "{component} git_url#branch/sha1 to build, or 'default', 'baseline' or 'jenkins-scm'" + +- parameter: + name: build-parameters + parameters: + - component-parameters: + component: binutils + default_git: '{default_git}' + - component-parameters: + component: gcc + default_git: '{default_git}' + - component-parameters: + component: glibc + default_git: '{default_git}' + - component-parameters: + component: linux + default_git: '{default_git}' + - component-parameters: + component: llvm + default_git: '{default_git}' + - choice: + name: update_baseline + choices: + - update + - reset + - init + - push + - ignore + description: "What to do with baseline in this build" + - default-parameters: + ci_project: '{ci_project}' + ci_config: '{ci_config}' + distro: '{distro}' + +# Beware: git branch names need the 'refs/heads/' prefix while tags +# need 'refs/tags/'. +- scm: + name: component-scm + scm: + - git: + url: '{url}' + branches: + - '{branch}' + basedir: '{component}' + skip-tag: true + reference-repo: '/home/tcwg-buildslave/snapshots-ref/{reference}' + wipe-workspace: false + clean: + before: true + prune: true + +# SCMs must start with jenkins-scripts and then be ordered alphabetically. +# Same alphabetical order must be followed in .def files. The reason behind +# this is that jenkins sets $GIT_COMMIT to sha1 of jenkins-scripts, and then +# sets $GIT_COMMIT_1, $GIT_COMMIT_2, etc. to sha1s of component SCM /in the +# order that they are declared here/. +- scm: + name: build-scms + scm: + - jenkins-scripts + - component-scm: + component: binutils + url: '{binutils_url}' + branch: '{binutils_branch}' + reference: binutils-gdb.git + - component-scm: + component: gcc + url: '{gcc_url}' + branch: '{gcc_branch}' + reference: gcc.git + - component-scm: + component: glibc + url: '{glibc_url}' + branch: '{glibc_branch}' + reference: glibc.git + - component-scm: + component: linux + url: '{linux_url}' + branch: '{linux_branch}' + reference: linux.git + - component-scm: + component: llvm + url: '{llvm_url}' + branch: '{llvm_branch}' + reference: llvm-project.git + - bmk-scripts + +- wrapper: + name: build-wrappers + wrappers: + - timeout: + timeout: '{timeout}' + - timestamps + - ssh-agent-credentials: + # tcwg-buildslave user id + users: + - 'e0958a95-204f-4c14-a66c-5e2be6c5d50a' + +- builder: + name: trigger-followup-builds + builders: + - build-name-setter: + name: 'artifacts/jenkins/build-name' + file: true + - conditional-step: + # Only run if above succeeded + # (a failed build is indicated by artifacts/failed) + condition-kind: current-status + steps: + - shell: | + #!/bin/bash + set -ex + for i in artifacts/trigger-build-* artifacts/trigger-bisect; do + if [ -f $i ]; then + echo "ci_project=$ci_project" >> $i + echo "ci_config=$ci_config" >> $i + echo "mail_recipients=$mail_recipients" >> $i + echo "distro=$distro" >> $i + echo "scripts_branch=$scripts_branch" >> $i + echo "bmk_branch=$bmk_branch" >> $i + fi + done + - trigger-builds: + - project: '{rr_project}-build{job_suffix}' + parameter-factories: + - factory: filebuild + file-pattern: artifacts/trigger-build-* + - project: '{rr_project}-bisect{job_suffix}' + property-file: artifacts/trigger-bisect + - shell: + command: | + #!/bin/bash + if [ -f artifacts/failed ]; then + exit $(cat artifacts/failed) + fi + unstable-return: 125 + +- builder: + name: run-build + builders: + - shell: + command: | + #!/bin/bash + set -ex + # Delete artifacts now to avoid re-using stale artifacts if + # below docker-run.sh fails to start up a container. + rm -rf artifacts/ + mkdir -p artifacts/jenkins + + dryruncmd="" + + # Skip SCM-triggered builds if there are other builds in + # the queue. We need to process all pending bisection-triggered + # builds before fetching a new batch of upstream changes. + if [ x"${{BUILD_CAUSE_SCMTRIGGER-false}}" = x"true" ]; then + inQueue=$(curl -s "${{JOB_URL}}api/xml?tree=inQueue" \ + | sed -e "s#.*<inQueue>\(.*\)</inQueue>.*#\1#") + if [ x"$inQueue" = x"true" ]; then + dryruncmd="echo SKIPPING SCM BUILD:" + touch artifacts/jenkins/skip-scm-build + fi + fi + + build_name="#$BUILD_NUMBER" + branch_opt="" + # 1 to skip jenkins-scripts + i=1 + for c in {components}; do + eval "g=\$$$${{c}}_git" + if [ x"$g" = x"default" ]; then + if [ x"${{BUILD_CAUSE_SCMTRIGGER-false}}" = x"true" ]; then + g="jenkins-scm" + else + g="baseline" + fi + fi + if [ x"$g" = x"jenkins-scm" ]; then + eval "g=\$GIT_URL_$i#\$GIT_COMMIT_$i" + fi + i=$(($i+1)) + if [ x"$g" != x"baseline" ]; then + build_name="$build_name-$c" + branch_opt="$branch_opt ==rr[${{c}}_git] $g" + fi + done + + $dryruncmd \ + ./jenkins-scripts/docker-run.sh \ + --distro $distro \ + --ssh_info true \ + -- \ + ./jenkins-scripts/{build_script} \ + %% artifacts/jenkins/manifest.sh \ + ==rr[ci_project] $ci_project \ + ==rr[ci_config] $ci_config \ + $extra_build_params \ + --bmk_branch "$bmk_branch" \ + --scripts_branch "$scripts_branch" \ + $branch_opt \ + ==rr[mode] "jenkins-full" \ + ==rr[update_baseline] "$update_baseline" \ + --BUILD_URL "$BUILD_URL" & + res=0 && wait $! || res=$? + + if [ $res != 0 ]; then + echo $res > artifacts/failed + fi + + if [ -f artifacts/jenkins/skip-scm-build ]; then + build_name="$build_name-skip-scm-build" + fi + if [ -f artifacts/results ]; then + build_name="$build_name-R$(tail -n1 artifacts/results)" + fi + if [ x"$update_baseline" != x"update" ]; then + build_name="$build_name-$update_baseline" + fi + if [ -f artifacts/trigger-bisect ]; then + build_name="$build_name-trigger-bisect" + fi + echo "$build_name" > artifacts/jenkins/build-name + + # If we didn't run the docker command + if [ -n "$dryruncmd" ]; then + # Mark build unstable aka a skipped config + exit 125 + fi + unstable-return: 125 + - trigger-followup-builds: + rr_project: '{rr_project}' + job_suffix: '{job_suffix}' + +- publisher: + name: build-publishers + publishers: + - archive: + artifacts: 'artifacts/**' + latest-only: false + +- parameter: + name: bisect-parameters + parameters: + - string: + name: current_project + default: "" + description: "Project to bisect" + - string: + name: bad_git + default: "" + description: "Bad git_url#branch/SHA1" + - file: + name: jenkins-scripts/replay_log + description: "Replay part of bisect using provided bisect log" + - default-parameters: + ci_project: '{ci_project}' + ci_config: '{ci_config}' + distro: '{distro}' + +- wrapper: + name: bisect-wrappers + wrappers: + - build-wrappers: + timeout: '{timeout}' + - credentials-binding: + - text: + credential-id: TCWG_JIRA_TOKEN + variable: TCWG_JIRA_TOKEN + +- builder: + name: run-bisect + builders: + - shell: + command: | + #!/bin/bash + set -ex + # Delete artifacts now to avoid re-using stale artifacts if + # below docker-run.sh fails to start up a container. + rm -rf artifacts/ + mkdir -p artifacts/jenkins + build_name="#$BUILD_NUMBER-$current_project" + echo "$build_name" > artifacts/jenkins/build-name + # artifacts/jenkins/mail-*.txt will be overwritten in successful builds. + echo "maxim.kuvyrkov@linaro.org, laurent.alfonsi@linaro.org" > artifacts/jenkins/mail-recipients.txt + echo "[TCWG CI] Bisect failed" > artifacts/jenkins/mail-subject.txt + echo "Bisect $BUILD_URL failed" > artifacts/jenkins/mail-body.txt + + ./jenkins-scripts/docker-run.sh \ + --distro $distro \ + --ssh_info true \ + -- \ + ./jenkins-scripts/round-robin-bisect.sh \ + %% artifacts/manifests/bisect.sh \ + --BUILD_URL "$BUILD_URL" \ + --current_project "$current_project" \ + --bad_git "$bad_git" \ + --replay_log "$(pwd)/jenkins-scripts/replay_log" \ + --build_script "./jenkins-scripts/{build_script}" \ + __TCWG_JIRA_TOKEN "$TCWG_JIRA_TOKEN" \ + -- \ + ==rr[ci_project] $ci_project \ + ==rr[ci_config] $ci_config \ + $extra_build_params \ + --bmk_branch "$bmk_branch" \ + --scripts_branch "$scripts_branch" & + res=0 && wait $! || res=$? + + if [ $res != 0 ]; then + echo $res > artifacts/failed + fi + + if [ x"$mail_recipients" != x"default" ]; then + echo "$mail_recipients" > artifacts/jenkins/mail-recipients.txt + fi + unstable-return: 125 + - trigger-followup-builds: + rr_project: '{rr_project}' + job_suffix: '{job_suffix}' + +- publisher: + name: bisect-publishers + publishers: + - build-publishers + - email-ext: + # Strangely, we no longer need to double-{ ${FILE} macro in + # recipients and body sections. They appear to bypass + # job-template expansion. + recipients: | + ${FILE,path="artifacts/jenkins/mail-recipients.txt"} + subject: | + ${FILE,path="artifacts/jenkins/mail-subject.txt"} + content-type: text + body: | + ${FILE,path="artifacts/jenkins/mail-body.txt"} + failure: true + success: true + aborted: true + send-to: + - recipients +#END: tcwg/round-robin.yaml.inc + +- job-template: + name: tcwg_bmk_ci_fujitsu_llvm-build-tcwg_bmk_{hw}-llvm-{toolchain_ver}-{target}-{bmk}-{cflags} + project-type: freestyle + defaults: global + properties: + - default-properties + - build-blocker: + blocking-jobs: + - "tcwg_bmk_ci_fujitsu_llvm-bisect-tcwg_bmk_{hw}-llvm-{toolchain_ver}-{target}-{bmk}-{cflags}" + queue-scanning: 'ALL' + parameters: + - build-parameters: + ci_project: 'tcwg_bmk_llvm_{hw}' + ci_config: 'llvm-{toolchain_ver}-{target}-{bmk}-{cflags}' + default_git: 'default' + distro: '{distro}' + disabled: true + node: tcwg-x86_64-build_bmk + concurrent: false + display-name: 'TCWG Build tcwg_bmk_{hw}/llvm-{toolchain_ver}-{target}-{bmk}-{cflags}' + workspace: workspace/tcwg_bmk_$EXECUTOR_NUMBER + scm: + - build-scms: + binutils_url: '{binutils_url}' + binutils_branch: '{binutils_branch}' + gcc_url: '{gcc_url}' + gcc_branch: '{gcc_branch}' + linux_url: '{linux_url}' + linux_branch: '{linux_branch}' + glibc_url: '{glibc_url}' + glibc_branch: '{glibc_branch}' + llvm_url: '{llvm_url}' + llvm_branch: '{llvm_branch}' + triggers: + - pollscm: + cron: '{cron_schedule}' + wrappers: + - build-wrappers: + timeout: 840 + builders: + - run-build: + build_script: 'tcwg_bmk-build.sh' + components: '{components}' + rr_project: 'tcwg_bmk_ci_fujitsu_llvm' + job_suffix: '-tcwg_bmk_{hw}-llvm-{toolchain_ver}-{target}-{bmk}-{cflags}' + publishers: + - build-publishers + +- job-template: + name: tcwg_bmk_ci_fujitsu_llvm-bisect-tcwg_bmk_{hw}-llvm-{toolchain_ver}-{target}-{bmk}-{cflags} + project-type: freestyle + defaults: global + properties: + - default-properties + - build-blocker: + # Run at most 1 bisect job for all configurations. + # Bisect jobs can easily run for 5+ hours, and a few of them + # can hog the entire TCWG build farm for a long time. Since + # same regression tends to appear in multiple configurations, + # run bisections for all configurations in-order. + blocking-jobs: + - "tcwg_bmk_ci_fujitsu_llvm-bisect-tcwg_bmk_{hw}-llvm-.*" + queue-scanning: 'BUILDABLE' + parameters: + - bisect-parameters: + ci_project: 'tcwg_bmk_llvm_{hw}' + ci_config: 'llvm-{toolchain_ver}-{target}-{bmk}-{cflags}' + distro: '{distro}' + disabled: true + node: tcwg-x86_64-build_bmk + concurrent: false + display-name: 'TCWG Bisect tcwg_bmk_{hw}/llvm-{toolchain_ver}-{target}-{bmk}-{cflags}' + workspace: workspace/tcwg_bmk_$EXECUTOR_NUMBER + scm: + - jenkins-scripts + - bmk-scripts + wrappers: + - bisect-wrappers: + timeout: 2880 + builders: + - run-bisect: + build_script: 'tcwg_bmk-build.sh' + rr_project: 'tcwg_bmk_ci_fujitsu_llvm' + job_suffix: '-tcwg_bmk_{hw}-llvm-{toolchain_ver}-{target}-{bmk}-{cflags}' + publishers: + - bisect-publishers +# checksum: fedc61dabd3df5582bbb2a7f975dae8c |