<?xml version="1.0" encoding="UTF-8"?><project>
  <actions/>
  <description>&lt;!-- Managed by Jenkins Job Builder --&gt;</description>
  <keepDependencies>false</keepDependencies>
  <disabled>true</disabled>
  <displayName>TCWG Build tcwg_kernel/llvm-master-aarch64-next-allnoconfig</displayName>
  <blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>
  <blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
  <concurrentBuild>false</concurrentBuild>
  <customWorkspace>workspace/tcwg_kernel_$EXECUTOR_NUMBER</customWorkspace>
  <assignedNode>jenkins-01 &amp;&amp; tcwg-x86_64-build</assignedNode>
  <canRoam>false</canRoam>
  <properties>
    <hudson.security.AuthorizationMatrixProperty>
      <permission>hudson.model.Item.Read:anonymous</permission>
      <permission>hudson.model.Item.ExtendedRead:anonymous</permission>
      <permission>hudson.model.Item.Build:everyone-flat</permission>
      <permission>hudson.model.Item.Cancel:everyone-flat</permission>
    </hudson.security.AuthorizationMatrixProperty>
    <jenkins.model.BuildDiscarderProperty>
      <strategy class="hudson.tasks.LogRotator">
        <daysToKeep>20</daysToKeep>
        <numToKeep>-1</numToKeep>
        <artifactDaysToKeep>-1</artifactDaysToKeep>
        <artifactNumToKeep>-1</artifactNumToKeep>
      </strategy>
    </jenkins.model.BuildDiscarderProperty>
    <hudson.plugins.buildblocker.BuildBlockerProperty>
      <useBuildBlocker>true</useBuildBlocker>
      <blockingJobs>tcwg_kernel--llvm-master-aarch64-next-allnoconfig-bisect</blockingJobs>
      <blockLevel>GLOBAL</blockLevel>
      <scanQueueFor>ALL</scanQueueFor>
    </hudson.plugins.buildblocker.BuildBlockerProperty>
    <hudson.model.ParametersDefinitionProperty>
      <parameterDefinitions>
        <hudson.model.StringParameterDefinition>
          <name>binutils_git</name>
          <description>binutils git_url#branch/sha1 to build, or 'default', 'baseline' or 'jenkins-scm', or pw://series/&lt;id&gt; to build with patches from patchwork ('precommit' mode, use 'pw://series/&lt;id&gt;/retrigger/' to force a rebuild)</description>
          <defaultValue>default</defaultValue>
        </hudson.model.StringParameterDefinition>
        <hudson.model.StringParameterDefinition>
          <name>linux_git</name>
          <description>linux git_url#branch/sha1 to build, or 'default', 'baseline' or 'jenkins-scm', or pw://series/&lt;id&gt; to build with patches from patchwork ('precommit' mode, use 'pw://series/&lt;id&gt;/retrigger/' to force a rebuild)</description>
          <defaultValue>default</defaultValue>
        </hudson.model.StringParameterDefinition>
        <hudson.model.StringParameterDefinition>
          <name>llvm_git</name>
          <description>llvm git_url#branch/sha1 to build, or 'default', 'baseline' or 'jenkins-scm', or pw://series/&lt;id&gt; to build with patches from patchwork ('precommit' mode, use 'pw://series/&lt;id&gt;/retrigger/' to force a rebuild)</description>
          <defaultValue>default</defaultValue>
        </hudson.model.StringParameterDefinition>
        <hudson.model.StringParameterDefinition>
          <name>qemu_git</name>
          <description>qemu git_url#branch/sha1 to build, or 'default', 'baseline' or 'jenkins-scm', or pw://series/&lt;id&gt; to build with patches from patchwork ('precommit' mode, use 'pw://series/&lt;id&gt;/retrigger/' to force a rebuild)</description>
          <defaultValue>default</defaultValue>
        </hudson.model.StringParameterDefinition>
        <hudson.model.ChoiceParameterDefinition>
          <name>update_baseline</name>
          <description>What to do with baseline in this build</description>
          <choices class="java.util.Arrays$ArrayList">
            <a class="string-array">
              <string>onsuccess</string>
              <string>force</string>
              <string>init</string>
              <string>ignore</string>
            </a>
          </choices>
        </hudson.model.ChoiceParameterDefinition>
        <hudson.model.ChoiceParameterDefinition>
          <name>notify</name>
          <description>Whether to notify developers about the result of this build</description>
          <choices class="java.util.Arrays$ArrayList">
            <a class="string-array">
              <string>ignore</string>
              <string>onregression</string>
              <string>precommit</string>
            </a>
          </choices>
        </hudson.model.ChoiceParameterDefinition>
        <hudson.model.StringParameterDefinition>
          <name>rr_stage</name>
          <description>Describe the current round-robin stage for this run (informative only)</description>
          <defaultValue>build</defaultValue>
        </hudson.model.StringParameterDefinition>
        <hudson.model.StringParameterDefinition>
          <name>extra_build_params</name>
          <description>Extra parameters to pass to the build script; can be used to override settings extracted from ci_project/ci_config</description>
          <defaultValue/>
        </hudson.model.StringParameterDefinition>
        <hudson.model.StringParameterDefinition>
          <name>distro</name>
          <description>Distro image to use</description>
          <defaultValue>default</defaultValue>
        </hudson.model.StringParameterDefinition>
        <hudson.model.StringParameterDefinition>
          <name>scripts_branch</name>
          <description>Scripts revision to use</description>
          <defaultValue>master</defaultValue>
        </hudson.model.StringParameterDefinition>
      </parameterDefinitions>
    </hudson.model.ParametersDefinitionProperty>
  </properties>
  <scm class="org.jenkinsci.plugins.multiplescms.MultiSCM">
    <scms>
      <hudson.plugins.git.GitSCM>
        <configVersion>2</configVersion>
        <userRemoteConfigs>
          <hudson.plugins.git.UserRemoteConfig>
            <name>origin</name>
            <refspec>+refs/heads/*:refs/remotes/origin/* +refs/changes/*:refs/changes/*</refspec>
            <url>https://gitlab.com/LinaroLtd/tcwg/jenkins-scripts.git</url>
          </hudson.plugins.git.UserRemoteConfig>
        </userRemoteConfigs>
        <branches>
          <hudson.plugins.git.BranchSpec>
            <name>$scripts_branch</name>
          </hudson.plugins.git.BranchSpec>
        </branches>
        <disableSubmodules>false</disableSubmodules>
        <recursiveSubmodules>false</recursiveSubmodules>
        <doGenerateSubmoduleConfigurations>false</doGenerateSubmoduleConfigurations>
        <remotePoll>false</remotePoll>
        <gitTool>Default</gitTool>
        <submoduleCfg class="list"/>
        <reference>/home/tcwg-buildslave/snapshots-ref/jenkins-scripts.git</reference>
        <gitConfigName/>
        <gitConfigEmail/>
        <extensions>
          <hudson.plugins.git.extensions.impl.RelativeTargetDirectory>
            <relativeTargetDir>jenkins-scripts</relativeTargetDir>
          </hudson.plugins.git.extensions.impl.RelativeTargetDirectory>
          <hudson.plugins.git.extensions.impl.CleanBeforeCheckout/>
          <hudson.plugins.git.extensions.impl.CloneOption>
            <shallow>false</shallow>
            <depth>1</depth>
            <reference>/home/tcwg-buildslave/snapshots-ref/jenkins-scripts.git</reference>
          </hudson.plugins.git.extensions.impl.CloneOption>
          <hudson.plugins.git.extensions.impl.PruneStaleBranch/>
        </extensions>
      </hudson.plugins.git.GitSCM>
      <hudson.plugins.git.GitSCM>
        <configVersion>2</configVersion>
        <userRemoteConfigs>
          <hudson.plugins.git.UserRemoteConfig>
            <name>origin</name>
            <refspec>+refs/heads/master:refs/remotes/origin/master</refspec>
            <url>git://sourceware.org/git/binutils-gdb.git</url>
          </hudson.plugins.git.UserRemoteConfig>
        </userRemoteConfigs>
        <branches>
          <hudson.plugins.git.BranchSpec>
            <name>refs/heads/master</name>
          </hudson.plugins.git.BranchSpec>
        </branches>
        <disableSubmodules>false</disableSubmodules>
        <recursiveSubmodules>false</recursiveSubmodules>
        <doGenerateSubmoduleConfigurations>false</doGenerateSubmoduleConfigurations>
        <remotePoll>false</remotePoll>
        <gitTool>Default</gitTool>
        <submoduleCfg class="list"/>
        <reference>/home/tcwg-buildslave/snapshots-ref/binutils-gdb.git</reference>
        <gitConfigName/>
        <gitConfigEmail/>
        <extensions>
          <hudson.plugins.git.extensions.impl.RelativeTargetDirectory>
            <relativeTargetDir>binutils</relativeTargetDir>
          </hudson.plugins.git.extensions.impl.RelativeTargetDirectory>
          <hudson.plugins.git.extensions.impl.CleanBeforeCheckout/>
          <hudson.plugins.git.extensions.impl.CloneOption>
            <shallow>true</shallow>
            <depth>1</depth>
            <noTags>true</noTags>
            <reference>/home/tcwg-buildslave/snapshots-ref/binutils-gdb.git</reference>
          </hudson.plugins.git.extensions.impl.CloneOption>
          <hudson.plugins.git.extensions.impl.PruneStaleBranch/>
        </extensions>
      </hudson.plugins.git.GitSCM>
      <hudson.plugins.git.GitSCM>
        <configVersion>2</configVersion>
        <userRemoteConfigs>
          <hudson.plugins.git.UserRemoteConfig>
            <name>origin</name>
            <refspec>+refs/heads/master:refs/remotes/origin/master</refspec>
            <url>https://gitlab.com/Linaro/lkft/mirrors/next/linux-next.git</url>
          </hudson.plugins.git.UserRemoteConfig>
        </userRemoteConfigs>
        <branches>
          <hudson.plugins.git.BranchSpec>
            <name>refs/heads/master</name>
          </hudson.plugins.git.BranchSpec>
        </branches>
        <disableSubmodules>false</disableSubmodules>
        <recursiveSubmodules>false</recursiveSubmodules>
        <doGenerateSubmoduleConfigurations>false</doGenerateSubmoduleConfigurations>
        <remotePoll>false</remotePoll>
        <gitTool>Default</gitTool>
        <submoduleCfg class="list"/>
        <reference>/home/tcwg-buildslave/snapshots-ref/linux.git</reference>
        <gitConfigName/>
        <gitConfigEmail/>
        <extensions>
          <hudson.plugins.git.extensions.impl.RelativeTargetDirectory>
            <relativeTargetDir>linux</relativeTargetDir>
          </hudson.plugins.git.extensions.impl.RelativeTargetDirectory>
          <hudson.plugins.git.extensions.impl.CleanBeforeCheckout/>
          <hudson.plugins.git.extensions.impl.CloneOption>
            <shallow>true</shallow>
            <depth>1</depth>
            <noTags>true</noTags>
            <reference>/home/tcwg-buildslave/snapshots-ref/linux.git</reference>
          </hudson.plugins.git.extensions.impl.CloneOption>
          <hudson.plugins.git.extensions.impl.PruneStaleBranch/>
        </extensions>
      </hudson.plugins.git.GitSCM>
      <hudson.plugins.git.GitSCM>
        <configVersion>2</configVersion>
        <userRemoteConfigs>
          <hudson.plugins.git.UserRemoteConfig>
            <name>origin</name>
            <refspec>+refs/heads/main:refs/remotes/origin/main</refspec>
            <url>https://github.com/llvm/llvm-project.git</url>
          </hudson.plugins.git.UserRemoteConfig>
        </userRemoteConfigs>
        <branches>
          <hudson.plugins.git.BranchSpec>
            <name>refs/heads/main</name>
          </hudson.plugins.git.BranchSpec>
        </branches>
        <disableSubmodules>false</disableSubmodules>
        <recursiveSubmodules>false</recursiveSubmodules>
        <doGenerateSubmoduleConfigurations>false</doGenerateSubmoduleConfigurations>
        <remotePoll>false</remotePoll>
        <gitTool>Default</gitTool>
        <submoduleCfg class="list"/>
        <reference>/home/tcwg-buildslave/snapshots-ref/llvm-project.git</reference>
        <gitConfigName/>
        <gitConfigEmail/>
        <extensions>
          <hudson.plugins.git.extensions.impl.RelativeTargetDirectory>
            <relativeTargetDir>llvm</relativeTargetDir>
          </hudson.plugins.git.extensions.impl.RelativeTargetDirectory>
          <hudson.plugins.git.extensions.impl.CleanBeforeCheckout/>
          <hudson.plugins.git.extensions.impl.CloneOption>
            <shallow>true</shallow>
            <depth>1</depth>
            <noTags>true</noTags>
            <reference>/home/tcwg-buildslave/snapshots-ref/llvm-project.git</reference>
          </hudson.plugins.git.extensions.impl.CloneOption>
          <hudson.plugins.git.extensions.impl.PruneStaleBranch/>
        </extensions>
      </hudson.plugins.git.GitSCM>
      <hudson.plugins.git.GitSCM>
        <configVersion>2</configVersion>
        <userRemoteConfigs>
          <hudson.plugins.git.UserRemoteConfig>
            <name>origin</name>
            <refspec>+refs/heads/master:refs/remotes/origin/master</refspec>
            <url>https://gitlab.com/qemu-project/qemu.git</url>
          </hudson.plugins.git.UserRemoteConfig>
        </userRemoteConfigs>
        <branches>
          <hudson.plugins.git.BranchSpec>
            <name>refs/heads/master</name>
          </hudson.plugins.git.BranchSpec>
        </branches>
        <disableSubmodules>false</disableSubmodules>
        <recursiveSubmodules>false</recursiveSubmodules>
        <doGenerateSubmoduleConfigurations>false</doGenerateSubmoduleConfigurations>
        <remotePoll>false</remotePoll>
        <gitTool>Default</gitTool>
        <submoduleCfg class="list"/>
        <reference>/home/tcwg-buildslave/snapshots-ref/qemu.git</reference>
        <gitConfigName/>
        <gitConfigEmail/>
        <extensions>
          <hudson.plugins.git.extensions.impl.RelativeTargetDirectory>
            <relativeTargetDir>qemu</relativeTargetDir>
          </hudson.plugins.git.extensions.impl.RelativeTargetDirectory>
          <hudson.plugins.git.extensions.impl.CleanBeforeCheckout/>
          <hudson.plugins.git.extensions.impl.CloneOption>
            <shallow>true</shallow>
            <depth>1</depth>
            <noTags>true</noTags>
            <reference>/home/tcwg-buildslave/snapshots-ref/qemu.git</reference>
          </hudson.plugins.git.extensions.impl.CloneOption>
          <hudson.plugins.git.extensions.impl.PruneStaleBranch/>
        </extensions>
      </hudson.plugins.git.GitSCM>
    </scms>
  </scm>
  <triggers class="vector">
    <hudson.triggers.SCMTrigger>
      <spec>H H H/4 * *</spec>
      <ignorePostCommitHooks>false</ignorePostCommitHooks>
    </hudson.triggers.SCMTrigger>
  </triggers>
  <builders>
    <org.jenkinsci.plugins.conditionalbuildstep.singlestep.SingleConditionalBuilder>
      <condition class="org.jenkins_ci.plugins.run_condition.core.StatusCondition">
        <worstResult>
          <name>SUCCESS</name>
          <ordinal>0</ordinal>
          <color>BLUE</color>
          <completeBuild>true</completeBuild>
        </worstResult>
        <bestResult>
          <name>SUCCESS</name>
          <ordinal>0</ordinal>
          <color>BLUE</color>
          <completeBuild>true</completeBuild>
        </bestResult>
      </condition>
      <runner class="org.jenkins_ci.plugins.run_condition.BuildStepRunner$Fail"/>
      <buildStep class="hudson.tasks.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"
echo "$build_name" &gt; artifacts/jenkins/build-name

git -C jenkins-scripts submodule update --init --remote

if [ "False" = "True" ]; then
  cat &gt;&gt; artifacts/jenkins/run-build.env &lt;&lt;EOF
update_baseline=ignore
EOF
fi

cat &gt;&gt; artifacts/jenkins/run-build.env &lt;&lt;EOF
build_name="$build_name"
EOF
</command>
        <unstableReturn>125</unstableReturn>
      </buildStep>
    </org.jenkinsci.plugins.conditionalbuildstep.singlestep.SingleConditionalBuilder>
    <org.jenkinsci.plugins.buildnameupdater.BuildNameUpdater>
      <buildName>artifacts/jenkins/build-name</buildName>
      <macroTemplate>#${BUILD_NUMBER}</macroTemplate>
      <fromFile>true</fromFile>
      <fromMacro>false</fromMacro>
      <macroFirst>false</macroFirst>
    </org.jenkinsci.plugins.buildnameupdater.BuildNameUpdater>
    <org.jenkinsci.plugins.conditionalbuildstep.singlestep.SingleConditionalBuilder>
      <condition class="org.jenkins_ci.plugins.run_condition.core.StatusCondition">
        <worstResult>
          <name>SUCCESS</name>
          <ordinal>0</ordinal>
          <color>BLUE</color>
          <completeBuild>true</completeBuild>
        </worstResult>
        <bestResult>
          <name>SUCCESS</name>
          <ordinal>0</ordinal>
          <color>BLUE</color>
          <completeBuild>true</completeBuild>
        </bestResult>
      </condition>
      <runner class="org.jenkins_ci.plugins.run_condition.BuildStepRunner$Fail"/>
      <buildStep class="hudson.tasks.Shell">
        <command>#!/bin/bash
source artifacts/jenkins/run-build.env
set -ex

# 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.
# Re. skipping post-commit build if pre-commit queue is
# not empty -- it's just a favor to pre-commit builds.
if [ x"${BUILD_CAUSE_SCMTRIGGER-false}" = x"true" ] \
  || [ x"${BUILD_CAUSE_TIMERTRIGGER-false}" = x"true" ]; then
  for job_type in build; do
    url="${JOB_URL%-build/}-$job_type"
    inQueue=$(curl --retry 5 --max-time 5 -s "$url/api/xml?tree=inQueue" \
      | sed -e "s#.*&lt;inQueue&gt;\(.*\)&lt;/inQueue&gt;.*#\1#")
    if [ "$inQueue" = "true" ]; then
      echo "SKIP SCM BUILD"
      touch artifacts/jenkins/skip-scm-build
      build_name="$build_name-skip-scm-build"
      echo "$build_name" &gt; artifacts/jenkins/build-name

      # Mark build unstable aka a skipped build
      exit 125
    fi
  done
fi

trap "" EXIT
</command>
        <unstableReturn>125</unstableReturn>
      </buildStep>
    </org.jenkinsci.plugins.conditionalbuildstep.singlestep.SingleConditionalBuilder>
    <org.jenkinsci.plugins.buildnameupdater.BuildNameUpdater>
      <buildName>artifacts/jenkins/build-name</buildName>
      <macroTemplate>#${BUILD_NUMBER}</macroTemplate>
      <fromFile>true</fromFile>
      <fromMacro>false</fromMacro>
      <macroFirst>false</macroFirst>
    </org.jenkinsci.plugins.buildnameupdater.BuildNameUpdater>
    <org.jenkinsci.plugins.conditionalbuildstep.singlestep.SingleConditionalBuilder>
      <condition class="org.jenkins_ci.plugins.run_condition.core.StatusCondition">
        <worstResult>
          <name>SUCCESS</name>
          <ordinal>0</ordinal>
          <color>BLUE</color>
          <completeBuild>true</completeBuild>
        </worstResult>
        <bestResult>
          <name>SUCCESS</name>
          <ordinal>0</ordinal>
          <color>BLUE</color>
          <completeBuild>true</completeBuild>
        </bestResult>
      </condition>
      <runner class="org.jenkins_ci.plugins.run_condition.BuildStepRunner$Fail"/>
      <buildStep class="hudson.tasks.Shell">
        <command>#!/bin/bash
source artifacts/jenkins/run-build.env
set -ex

repo='ssh://tcwg-buildslave@bkp.tcwglab/home/tcwg-buildslave/base-artifacts/tcwg_kernel/llvm-master-aarch64-next-allnoconfig.git'
branch='linaro-local/ci/tcwg_kernel/llvm-master-aarch64-next-allnoconfig'
git_result=$(git ls-remote --heads "$repo" "refs/heads/$branch")
if [ -d base-artifacts ] &amp;&amp; [ "$git_result" != "" ]; then
  git -C base-artifacts fetch "$repo" "refs/heads/$branch" || true
fi

docker_opts=(
  --distro $distro
  --node_labels "$NODE_LABELS"
)

./jenkins-scripts/start-container-docker.sh --prefix build_ \
  "${docker_opts[@]}" &gt; build_container.sh
source build_container.sh
trap "cleanup_all_containers" EXIT

# Run the build script to fetch base-artifacts/, which are
# required to fetch baseline sources to apply patches to in
# pw-apply.sh below.  This also initializes the build manifest
# with all below settings; we then import this manifest below.
#
# The parameter __finish_after makes the build script stop
# after fetching the baseline and "__" avoids saving this parameter
# in the manifest, so that we don't see this option in the main
# run of the build script below.
build_container_exec \
  ./jenkins-scripts/tcwg_kernel-build.sh \
  %%rr[top_artifacts] artifacts \
  ==rr[ci_project] 'tcwg_kernel' \
  ==rr[ci_config] 'llvm-master-aarch64-next-allnoconfig' \
  $extra_build_params \
  --scripts_branch "$scripts_branch" \
  ==rr[mode] "build" \
  ==rr[update_baseline] "$update_baseline" \
  --BUILD_URL "$BUILD_URL" \
  __finish_at reset_artifacts

echo "$rr_stage" &gt; artifacts/rr_stage.txt

cat &gt;&gt; artifacts/jenkins/run-build.env &lt;&lt;EOF
docker_opts=(${docker_opts[@]+$(printf "%q$IFS" "${docker_opts[@]}")})
source build_container.sh
trap "cleanup_all_containers" EXIT
EOF

# Now that we have "trap cleanup_all_containers EXIT" in
# run-build.env we need to reset the trap at the end of every
# step to preserve container[s] for the next step.
trap "" EXIT
</command>
        <unstableReturn>125</unstableReturn>
      </buildStep>
    </org.jenkinsci.plugins.conditionalbuildstep.singlestep.SingleConditionalBuilder>
    <org.jenkinsci.plugins.buildnameupdater.BuildNameUpdater>
      <buildName>artifacts/jenkins/build-name</buildName>
      <macroTemplate>#${BUILD_NUMBER}</macroTemplate>
      <fromFile>true</fromFile>
      <fromMacro>false</fromMacro>
      <macroFirst>false</macroFirst>
    </org.jenkinsci.plugins.buildnameupdater.BuildNameUpdater>
    <org.jenkinsci.plugins.conditionalbuildstep.singlestep.SingleConditionalBuilder>
      <condition class="org.jenkins_ci.plugins.run_condition.core.StatusCondition">
        <worstResult>
          <name>SUCCESS</name>
          <ordinal>0</ordinal>
          <color>BLUE</color>
          <completeBuild>true</completeBuild>
        </worstResult>
        <bestResult>
          <name>SUCCESS</name>
          <ordinal>0</ordinal>
          <color>BLUE</color>
          <completeBuild>true</completeBuild>
        </bestResult>
      </condition>
      <runner class="org.jenkins_ci.plugins.run_condition.BuildStepRunner$Fail"/>
      <buildStep class="hudson.tasks.Shell">
        <command>#!/bin/bash
source artifacts/jenkins/run-build.env
set -ex

branch_opt=()
# 1 to skip jenkins-scripts
i=1
for c in binutils linux llvm qemu; do
  eval "g=\$${c}_git"
  if [ x"$g" = x"default" ]; then
    if [ x"${BUILD_CAUSE_SCMTRIGGER-false}" = x"true" ] \
      || [ x"${BUILD_CAUSE_TIMERTRIGGER-false}" = x"true" ]; then
      g="jenkins-scm"
    else
      g="baseline"
    fi
  fi
  if [ x"$g" = x"jenkins-scm" ] || [ "$update_baseline" = "init" ]; then
    eval "gb=\$GIT_BRANCH_$i"
    gb=$(echo $gb | sed 's+origin/++')
    eval "g=\$GIT_URL_$i#$gb"
  fi
  i=$(($i+1))

  if [ x"$g" != x"baseline" ]; then
    build_name="$build_name-$c"
    branch_opt+=("==rr[${c}_git]" "$g")
  fi
done

echo "$build_name" &gt; artifacts/jenkins/build-name

cat &gt;&gt; artifacts/jenkins/run-build.env &lt;&lt;EOF
build_name="$build_name"
branch_opt=(${branch_opt[@]+$(printf "%q$IFS" "${branch_opt[@]}")})
EOF

trap "" EXIT
</command>
        <unstableReturn>125</unstableReturn>
      </buildStep>
    </org.jenkinsci.plugins.conditionalbuildstep.singlestep.SingleConditionalBuilder>
    <org.jenkinsci.plugins.buildnameupdater.BuildNameUpdater>
      <buildName>artifacts/jenkins/build-name</buildName>
      <macroTemplate>#${BUILD_NUMBER}</macroTemplate>
      <fromFile>true</fromFile>
      <fromMacro>false</fromMacro>
      <macroFirst>false</macroFirst>
    </org.jenkinsci.plugins.buildnameupdater.BuildNameUpdater>
    <org.jenkinsci.plugins.conditionalbuildstep.singlestep.SingleConditionalBuilder>
      <condition class="org.jenkins_ci.plugins.run_condition.core.StatusCondition">
        <worstResult>
          <name>SUCCESS</name>
          <ordinal>0</ordinal>
          <color>BLUE</color>
          <completeBuild>true</completeBuild>
        </worstResult>
        <bestResult>
          <name>SUCCESS</name>
          <ordinal>0</ordinal>
          <color>BLUE</color>
          <completeBuild>true</completeBuild>
        </bestResult>
      </condition>
      <runner class="org.jenkins_ci.plugins.run_condition.BuildStepRunner$Fail"/>
      <buildStep class="hudson.tasks.Shell">
        <command>#!/bin/bash
source artifacts/jenkins/run-build.env
set -ex

# Update baseline branch of base-artifacts.
# If we made it this far, then the build is successful
# (possibly because it was forced to be declared successful).
if [ "$update_baseline" = "ignore" ]; then
  trap "" EXIT
  exit 0
fi

# We may need jira token while rewriting history.
if [ -f $HOME/.jipdate.yml ]; then
  (
    # BE CAREFUL WITH TCWG_JIRA_TOKEN
    set +x
    build_container_exec \
      sed -i -e "s/#TCWG_JIRA_TOKEN#/$TCWG_JIRA_TOKEN/" \
      "$HOME/.jipdate.yml"
  )
fi

build_container_exec \
  ./jenkins-scripts/rr/round-robin-baseline.sh \
  @@rr[top_artifacts] artifacts \
  __build_script tcwg_kernel-build.sh \
  __push_base_artifacts true \
  __rewrite_base_artifacts true \
  __commit_artifacts false \
  __rewrite_num 100 \
  &amp;&gt; ./artifacts/jenkins/rewrite-false.log &amp;

res=0 &amp;&amp; wait $! || res=$?

# Compress big files in artifacts/NN-* directories to save disk space
# on ci.linaro.org.
find artifacts/ -size +1M ! -name "*.xz" \
  -path "artifacts/[0-9]*" -print0 \
  | xargs -0 -i@ xz -T0 @

if [ $res != 0 ]; then
  echo "maxim.kuvyrkov@linaro.org, laurent.alfonsi@linaro.org" \
    &gt; artifacts/jenkins/error-mail-recipients.txt
  echo -e "$BUILD_URL\nERROR: round-robin-baseline.sh failed" \
    &gt;&gt; artifacts/jenkins/error-mail-body.txt
  echo "ERROR: round-robin-baseline.sh failed"
  # We have failed to update the baseline, so let's fail and
  # not notify developers.
  exit 1
fi

trap "" EXIT
</command>
      </buildStep>
    </org.jenkinsci.plugins.conditionalbuildstep.singlestep.SingleConditionalBuilder>
    <org.jenkinsci.plugins.conditionalbuildstep.singlestep.SingleConditionalBuilder>
      <condition class="org.jenkins_ci.plugins.run_condition.core.StatusCondition">
        <worstResult>
          <name>SUCCESS</name>
          <ordinal>0</ordinal>
          <color>BLUE</color>
          <completeBuild>true</completeBuild>
        </worstResult>
        <bestResult>
          <name>SUCCESS</name>
          <ordinal>0</ordinal>
          <color>BLUE</color>
          <completeBuild>true</completeBuild>
        </bestResult>
      </condition>
      <runner class="org.jenkins_ci.plugins.run_condition.BuildStepRunner$Fail"/>
      <buildStep class="hudson.tasks.Shell">
        <command>#!/bin/bash
source artifacts/jenkins/run-build.env
set -ex

# Run the build script to from the manifest created above.
#
# The parameter __start_at makes the build script start right
# where the above run finished.  This allows us to use read-only
# bind-mount for base-artifacts/, which, otherwise, may require
# multi-gig rsync.
build_container_exec \
  ./jenkins-scripts/tcwg_kernel-build.sh \
  @@rr[top_artifacts] artifacts \
  "${branch_opt[@]}" \
  __start_at reset_artifacts+ &amp;
res=0 &amp;&amp; wait $! || res=$?

# Update build_name
if [ -f artifacts/results ]; then
  build_name="$build_name-R$(tail -n1 artifacts/results)"
fi
if [ "$update_baseline" != "onsuccess" ]; then
  build_name="$build_name-$update_baseline"
fi

if [ -f artifacts/trigger-bisect ]; then
  build_name="$build_name-trigger-bisect"
fi
echo "$build_name" &gt; artifacts/jenkins/build-name

# Everything but 0 and $INTERNAL_FAILURE is an unexpected exit code,
# so stop here and do nothing else.  From jenkins point of view ...
# - if $res==0: build is successful, so proceed with all
#   followup steps -- notify, push, trigger precommit.
# - if $res==123: build has a regression, so proceed with triggering
#   followup builds and sending precommit notifications; but stop
#   before run-push-baseline by checking artifacts/failed.
# - if $res is anything else: build has an unexpected failure, so
#   skip the rest of the steps by setting UNSTABLE build status.
#   This will cause all followup conditional-steps to skip due to
#   "current-status" condition.
#
# See comment before round-robin.sh:check_regression() for details.
case $res in
  0)
    ;;
  123)
    echo 123 &gt; artifacts/failed
    ;;
  *)
    res=125
    ;;
esac

if [ $res = 125 ]; then
  # We had unexpected failure in the build scripts, so can't
  # proceed with triggers and notifications.  Mark this build
  # as UNSTABLE, which will skip all following conditional-steps.
  exit 125
fi

cat &gt;&gt; artifacts/jenkins/run-build.env &lt;&lt;EOF
build_name="$build_name"
EOF

trap "" EXIT
</command>
        <unstableReturn>125</unstableReturn>
      </buildStep>
    </org.jenkinsci.plugins.conditionalbuildstep.singlestep.SingleConditionalBuilder>
    <org.jenkinsci.plugins.buildnameupdater.BuildNameUpdater>
      <buildName>artifacts/jenkins/build-name</buildName>
      <macroTemplate>#${BUILD_NUMBER}</macroTemplate>
      <fromFile>true</fromFile>
      <fromMacro>false</fromMacro>
      <macroFirst>false</macroFirst>
    </org.jenkinsci.plugins.buildnameupdater.BuildNameUpdater>
    <org.jenkinsci.plugins.conditionalbuildstep.ConditionalBuilder>
      <conditionalbuilders>
        <hudson.tasks.Shell>
          <command>#!/bin/bash
source artifacts/jenkins/run-build.env
set -ex

for i in artifacts/trigger-build-* artifacts/trigger-bisect; do
  if [ -f $i ]; then
    echo "distro=$distro" &gt;&gt; $i
    echo "scripts_branch=$scripts_branch" &gt;&gt; $i
  fi
done

trap "" EXIT
</command>
        </hudson.tasks.Shell>
        <hudson.plugins.parameterizedtrigger.TriggerBuilder>
          <configs>
            <hudson.plugins.parameterizedtrigger.BlockableBuildTriggerConfig>
              <configs class="java.util.Collections$EmptyList"/>
              <configFactories>
                <hudson.plugins.parameterizedtrigger.FileBuildParameterFactory>
                  <filePattern>artifacts/trigger-build-*</filePattern>
                  <noFilesFoundAction>SKIP</noFilesFoundAction>
                </hudson.plugins.parameterizedtrigger.FileBuildParameterFactory>
              </configFactories>
              <projects>tcwg_kernel--llvm-master-aarch64-next-allnoconfig-build</projects>
              <condition>ALWAYS</condition>
              <triggerWithNoParameters>false</triggerWithNoParameters>
              <buildAllNodesWithLabel>false</buildAllNodesWithLabel>
            </hudson.plugins.parameterizedtrigger.BlockableBuildTriggerConfig>
            <hudson.plugins.parameterizedtrigger.BlockableBuildTriggerConfig>
              <configs>
                <hudson.plugins.parameterizedtrigger.FileBuildParameters>
                  <propertiesFile>artifacts/trigger-bisect</propertiesFile>
                  <failTriggerOnMissing>true</failTriggerOnMissing>
                </hudson.plugins.parameterizedtrigger.FileBuildParameters>
              </configs>
              <projects>tcwg_kernel--llvm-master-aarch64-next-allnoconfig-bisect</projects>
              <condition>ALWAYS</condition>
              <triggerWithNoParameters>false</triggerWithNoParameters>
              <buildAllNodesWithLabel>false</buildAllNodesWithLabel>
            </hudson.plugins.parameterizedtrigger.BlockableBuildTriggerConfig>
          </configs>
        </hudson.plugins.parameterizedtrigger.TriggerBuilder>
      </conditionalbuilders>
      <runCondition class="org.jenkins_ci.plugins.run_condition.core.StatusCondition">
        <worstResult>
          <name>SUCCESS</name>
          <ordinal>0</ordinal>
          <color>BLUE</color>
          <completeBuild>true</completeBuild>
        </worstResult>
        <bestResult>
          <name>SUCCESS</name>
          <ordinal>0</ordinal>
          <color>BLUE</color>
          <completeBuild>true</completeBuild>
        </bestResult>
      </runCondition>
      <runner class="org.jenkins_ci.plugins.run_condition.BuildStepRunner$Fail"/>
    </org.jenkinsci.plugins.conditionalbuildstep.ConditionalBuilder>
    <org.jenkinsci.plugins.buildnameupdater.BuildNameUpdater>
      <buildName>artifacts/jenkins/build-name</buildName>
      <macroTemplate>#${BUILD_NUMBER}</macroTemplate>
      <fromFile>true</fromFile>
      <fromMacro>false</fromMacro>
      <macroFirst>false</macroFirst>
    </org.jenkinsci.plugins.buildnameupdater.BuildNameUpdater>
    <org.jenkinsci.plugins.conditionalbuildstep.singlestep.SingleConditionalBuilder>
      <condition class="org.jenkins_ci.plugins.run_condition.core.StatusCondition">
        <worstResult>
          <name>SUCCESS</name>
          <ordinal>0</ordinal>
          <color>BLUE</color>
          <completeBuild>true</completeBuild>
        </worstResult>
        <bestResult>
          <name>SUCCESS</name>
          <ordinal>0</ordinal>
          <color>BLUE</color>
          <completeBuild>true</completeBuild>
        </bestResult>
      </condition>
      <runner class="org.jenkins_ci.plugins.run_condition.BuildStepRunner$Fail"/>
      <buildStep class="hudson.tasks.Shell">
        <command>#!/bin/bash
source artifacts/jenkins/run-build.env
set -ex

if [ -f artifacts/failed ]; then
  # Only send notifications for forced successful
  # (aka "onregression") builds; never for failed builds.
  echo "Build failed. Using option notify=ignore."
  notify=ignore
fi

# Basic notification -- create entry in interesting-commits.
# Note that we add --notify to the manifest -- we will need this
# later in round-robin-baseline.sh when re-writing history
# to update notifications files in interesting-commits and jira.
build_container_exec \
  ./jenkins-scripts/rr/round-robin-notify.sh \
  @@rr[top_artifacts] artifacts --notify "$notify" \
  __stage init __verbose true \
  __build_script tcwg_kernel-build.sh \
  &amp;&gt; ./artifacts/jenkins/notify-init.log &amp;

if ! wait $!; then
  echo "maxim.kuvyrkov@linaro.org, laurent.alfonsi@linaro.org" \
    &gt; artifacts/jenkins/error-mail-recipients.txt
  echo -e "$BUILD_URL\nERROR: notify-init failed\n" \
    &gt;&gt; artifacts/jenkins/error-mail-body.txt
  echo "ERROR: notify-init failed"
  exit 1
fi

# Full notification
echo "NOTE: Notify developers about this build"

build_container_exec \
  ./jenkins-scripts/rr/round-robin-notify.sh \
  @@rr[top_artifacts] artifacts __stage full __verbose true \
  __build_script tcwg_kernel-build.sh \
  &amp;&gt; ./artifacts/jenkins/notify-full.log &amp;

if ! wait $!; then
  echo "maxim.kuvyrkov@linaro.org, laurent.alfonsi@linaro.org" \
    &gt; artifacts/jenkins/error-mail-recipients.txt
  echo -e "$BUILD_URL\nERROR: notify-full failed\n" \
    &gt;&gt; artifacts/jenkins/error-mail-body.txt
  echo "ERROR: notify-full failed"
fi

# Failsafe for avoid spamming developers.
if [ "$notify" = "ignore" ] \
  &amp;&amp; [ -f artifacts/jenkins/mail-recipients.txt ]; then
  echo "maxim.kuvyrkov@linaro.org, laurent.alfonsi@linaro.org" \
    &gt; artifacts/jenkins/error-mail-recipients.txt
  echo -e "$BUILD_URL\nERROR: tried to unexpectedly notify developers\n" \
    &gt;&gt; artifacts/jenkins/error-mail-body.txt
  mv artifacts/jenkins/mail-recipients.txt \
  artifacts/jenkins/mail-recipients.bak
fi

trap "" EXIT
</command>
      </buildStep>
    </org.jenkinsci.plugins.conditionalbuildstep.singlestep.SingleConditionalBuilder>
    <org.jenkinsci.plugins.buildnameupdater.BuildNameUpdater>
      <buildName>artifacts/jenkins/build-name</buildName>
      <macroTemplate>#${BUILD_NUMBER}</macroTemplate>
      <fromFile>true</fromFile>
      <fromMacro>false</fromMacro>
      <macroFirst>false</macroFirst>
    </org.jenkinsci.plugins.buildnameupdater.BuildNameUpdater>
    <org.jenkinsci.plugins.conditionalbuildstep.singlestep.SingleConditionalBuilder>
      <condition class="org.jenkins_ci.plugins.run_condition.core.StatusCondition">
        <worstResult>
          <name>SUCCESS</name>
          <ordinal>0</ordinal>
          <color>BLUE</color>
          <completeBuild>true</completeBuild>
        </worstResult>
        <bestResult>
          <name>SUCCESS</name>
          <ordinal>0</ordinal>
          <color>BLUE</color>
          <completeBuild>true</completeBuild>
        </bestResult>
      </condition>
      <runner class="org.jenkins_ci.plugins.run_condition.BuildStepRunner$Fail"/>
      <buildStep class="hudson.tasks.Shell">
        <command>#!/bin/bash
source artifacts/jenkins/run-build.env
set -ex

if [ -f artifacts/failed ]; then
  # Mark failed build as FAILURE; no further steps will run.
  exit $(cat artifacts/failed)
fi
# Only successful builds run beyond this point.

trap "" EXIT
</command>
      </buildStep>
    </org.jenkinsci.plugins.conditionalbuildstep.singlestep.SingleConditionalBuilder>
    <org.jenkinsci.plugins.buildnameupdater.BuildNameUpdater>
      <buildName>artifacts/jenkins/build-name</buildName>
      <macroTemplate>#${BUILD_NUMBER}</macroTemplate>
      <fromFile>true</fromFile>
      <fromMacro>false</fromMacro>
      <macroFirst>false</macroFirst>
    </org.jenkinsci.plugins.buildnameupdater.BuildNameUpdater>
    <org.jenkinsci.plugins.conditionalbuildstep.singlestep.SingleConditionalBuilder>
      <condition class="org.jenkins_ci.plugins.run_condition.core.StatusCondition">
        <worstResult>
          <name>SUCCESS</name>
          <ordinal>0</ordinal>
          <color>BLUE</color>
          <completeBuild>true</completeBuild>
        </worstResult>
        <bestResult>
          <name>SUCCESS</name>
          <ordinal>0</ordinal>
          <color>BLUE</color>
          <completeBuild>true</completeBuild>
        </bestResult>
      </condition>
      <runner class="org.jenkins_ci.plugins.run_condition.BuildStepRunner$Fail"/>
      <buildStep class="hudson.tasks.Shell">
        <command>#!/bin/bash
source artifacts/jenkins/run-build.env
set -ex

# Update baseline branch of base-artifacts.
# If we made it this far, then the build is successful
# (possibly because it was forced to be declared successful).
if [ "$update_baseline" = "ignore" ]; then
  trap "" EXIT
  exit 0
fi

# We may need jira token while rewriting history.
if [ -f $HOME/.jipdate.yml ]; then
  (
    # BE CAREFUL WITH TCWG_JIRA_TOKEN
    set +x
    build_container_exec \
      sed -i -e "s/#TCWG_JIRA_TOKEN#/$TCWG_JIRA_TOKEN/" \
      "$HOME/.jipdate.yml"
  )
fi

build_container_exec \
  ./jenkins-scripts/rr/round-robin-baseline.sh \
  @@rr[top_artifacts] artifacts \
  __build_script tcwg_kernel-build.sh \
  __push_base_artifacts true \
  __rewrite_base_artifacts true \
  __commit_artifacts true \
  __rewrite_num 100 \
  &amp;&gt; ./artifacts/jenkins/rewrite-true.log &amp;

res=0 &amp;&amp; wait $! || res=$?

# Compress big files in artifacts/NN-* directories to save disk space
# on ci.linaro.org.
find artifacts/ -size +1M ! -name "*.xz" \
  -path "artifacts/[0-9]*" -print0 \
  | xargs -0 -i@ xz -T0 @

if [ $res != 0 ]; then
  echo "maxim.kuvyrkov@linaro.org, laurent.alfonsi@linaro.org" \
    &gt; artifacts/jenkins/error-mail-recipients.txt
  echo -e "$BUILD_URL\nERROR: round-robin-baseline.sh failed" \
    &gt;&gt; artifacts/jenkins/error-mail-body.txt
  echo "ERROR: round-robin-baseline.sh failed"
  # We have failed to update the baseline, so let's fail and
  # not notify developers.
  exit 1
fi

trap "" EXIT
</command>
      </buildStep>
    </org.jenkinsci.plugins.conditionalbuildstep.singlestep.SingleConditionalBuilder>
    <org.jenkinsci.plugins.buildnameupdater.BuildNameUpdater>
      <buildName>artifacts/jenkins/build-name</buildName>
      <macroTemplate>#${BUILD_NUMBER}</macroTemplate>
      <fromFile>true</fromFile>
      <fromMacro>false</fromMacro>
      <macroFirst>false</macroFirst>
    </org.jenkinsci.plugins.buildnameupdater.BuildNameUpdater>
    <org.jenkinsci.plugins.conditionalbuildstep.singlestep.SingleConditionalBuilder>
      <condition class="org.jenkins_ci.plugins.run_condition.core.StatusCondition">
        <worstResult>
          <name>SUCCESS</name>
          <ordinal>0</ordinal>
          <color>BLUE</color>
          <completeBuild>true</completeBuild>
        </worstResult>
        <bestResult>
          <name>SUCCESS</name>
          <ordinal>0</ordinal>
          <color>BLUE</color>
          <completeBuild>true</completeBuild>
        </bestResult>
      </condition>
      <runner class="org.jenkins_ci.plugins.run_condition.BuildStepRunner$Fail"/>
      <buildStep class="hudson.plugins.parameterizedtrigger.TriggerBuilder">
        <configs>
          <hudson.plugins.parameterizedtrigger.BlockableBuildTriggerConfig>
            <configs>
              <hudson.plugins.parameterizedtrigger.PredefinedBuildParameters>
                <properties>ci_project=tcwg_kernel
ci_config=llvm-master-aarch64-next-allnoconfig
</properties>
              </hudson.plugins.parameterizedtrigger.PredefinedBuildParameters>
            </configs>
            <projects>tcwg-update-lnt-results</projects>
            <condition>ALWAYS</condition>
            <triggerWithNoParameters>false</triggerWithNoParameters>
            <buildAllNodesWithLabel>false</buildAllNodesWithLabel>
          </hudson.plugins.parameterizedtrigger.BlockableBuildTriggerConfig>
        </configs>
      </buildStep>
    </org.jenkinsci.plugins.conditionalbuildstep.singlestep.SingleConditionalBuilder>
    <org.jenkinsci.plugins.buildnameupdater.BuildNameUpdater>
      <buildName>artifacts/jenkins/build-name</buildName>
      <macroTemplate>#${BUILD_NUMBER}</macroTemplate>
      <fromFile>true</fromFile>
      <fromMacro>false</fromMacro>
      <macroFirst>false</macroFirst>
    </org.jenkinsci.plugins.buildnameupdater.BuildNameUpdater>
    <org.jenkinsci.plugins.conditionalbuildstep.singlestep.SingleConditionalBuilder>
      <condition class="org.jenkins_ci.plugins.run_condition.core.StatusCondition">
        <worstResult>
          <name>SUCCESS</name>
          <ordinal>0</ordinal>
          <color>BLUE</color>
          <completeBuild>true</completeBuild>
        </worstResult>
        <bestResult>
          <name>SUCCESS</name>
          <ordinal>0</ordinal>
          <color>BLUE</color>
          <completeBuild>true</completeBuild>
        </bestResult>
      </condition>
      <runner class="org.jenkins_ci.plugins.run_condition.BuildStepRunner$Fail"/>
      <buildStep class="hudson.tasks.Shell">
        <command>#!/bin/bash
source artifacts/jenkins/run-build.env
set -ex
# The "trap cleanup_all_containers EXIT" statement in
# artifacts/jenkins/run-build.env will remove build and precommit
# containers.
</command>
        <unstableReturn>0</unstableReturn>
      </buildStep>
    </org.jenkinsci.plugins.conditionalbuildstep.singlestep.SingleConditionalBuilder>
  </builders>
  <publishers>
    <hudson.tasks.ArtifactArchiver>
      <artifacts>artifacts/**</artifacts>
      <allowEmptyArchive>false</allowEmptyArchive>
      <onlyIfSuccessful>false</onlyIfSuccessful>
      <fingerprint>false</fingerprint>
      <defaultExcludes>true</defaultExcludes>
      <caseSensitive>true</caseSensitive>
      <latestOnly>false</latestOnly>
    </hudson.tasks.ArtifactArchiver>
    <hudson.plugins.emailext.ExtendedEmailPublisher>
      <recipientList>${FILE,path="artifacts/jenkins/mail-recipients.txt"}
</recipientList>
      <configuredTriggers>
        <hudson.plugins.emailext.plugins.trigger.FailureTrigger>
          <email>
            <recipientList/>
            <subject>$PROJECT_DEFAULT_SUBJECT</subject>
            <body>$PROJECT_DEFAULT_CONTENT</body>
            <sendToDevelopers>false</sendToDevelopers>
            <sendToRequester>false</sendToRequester>
            <includeCulprits>false</includeCulprits>
            <sendToRecipientList>true</sendToRecipientList>
          </email>
        </hudson.plugins.emailext.plugins.trigger.FailureTrigger>
        <hudson.plugins.emailext.plugins.trigger.SuccessTrigger>
          <email>
            <recipientList/>
            <subject>$PROJECT_DEFAULT_SUBJECT</subject>
            <body>$PROJECT_DEFAULT_CONTENT</body>
            <sendToDevelopers>false</sendToDevelopers>
            <sendToRequester>false</sendToRequester>
            <includeCulprits>false</includeCulprits>
            <sendToRecipientList>true</sendToRecipientList>
          </email>
        </hudson.plugins.emailext.plugins.trigger.SuccessTrigger>
      </configuredTriggers>
      <contentType>text/plain</contentType>
      <defaultSubject>${FILE,path="artifacts/jenkins/mail-subject.txt"}
</defaultSubject>
      <defaultContent>${FILE,path="artifacts/jenkins/mail-body.txt"}
</defaultContent>
      <attachmentsPattern/>
      <presendScript/>
      <postsendScript/>
      <attachBuildLog>false</attachBuildLog>
      <compressBuildLog>false</compressBuildLog>
      <saveOutput>false</saveOutput>
      <disabled>false</disabled>
      <replyTo>linaro-toolchain@lists.linaro.org</replyTo>
    </hudson.plugins.emailext.ExtendedEmailPublisher>
    <hudson.plugins.emailext.ExtendedEmailPublisher>
      <recipientList>${FILE,path="artifacts/jenkins/error-mail-recipients.txt"}
</recipientList>
      <configuredTriggers>
        <hudson.plugins.emailext.plugins.trigger.AbortedTrigger>
          <email>
            <recipientList/>
            <subject>$PROJECT_DEFAULT_SUBJECT</subject>
            <body>$PROJECT_DEFAULT_CONTENT</body>
            <sendToDevelopers>false</sendToDevelopers>
            <sendToRequester>false</sendToRequester>
            <includeCulprits>false</includeCulprits>
            <sendToRecipientList>true</sendToRecipientList>
          </email>
        </hudson.plugins.emailext.plugins.trigger.AbortedTrigger>
        <hudson.plugins.emailext.plugins.trigger.FailureTrigger>
          <email>
            <recipientList/>
            <subject>$PROJECT_DEFAULT_SUBJECT</subject>
            <body>$PROJECT_DEFAULT_CONTENT</body>
            <sendToDevelopers>false</sendToDevelopers>
            <sendToRequester>false</sendToRequester>
            <includeCulprits>false</includeCulprits>
            <sendToRecipientList>true</sendToRecipientList>
          </email>
        </hudson.plugins.emailext.plugins.trigger.FailureTrigger>
        <hudson.plugins.emailext.plugins.trigger.SuccessTrigger>
          <email>
            <recipientList/>
            <subject>$PROJECT_DEFAULT_SUBJECT</subject>
            <body>$PROJECT_DEFAULT_CONTENT</body>
            <sendToDevelopers>false</sendToDevelopers>
            <sendToRequester>false</sendToRequester>
            <includeCulprits>false</includeCulprits>
            <sendToRecipientList>true</sendToRecipientList>
          </email>
        </hudson.plugins.emailext.plugins.trigger.SuccessTrigger>
      </configuredTriggers>
      <contentType>default</contentType>
      <defaultSubject>$DEFAULT_SUBJECT</defaultSubject>
      <defaultContent>${FILE,path="artifacts/jenkins/error-mail-body.txt"}
</defaultContent>
      <attachmentsPattern/>
      <presendScript/>
      <postsendScript/>
      <attachBuildLog>false</attachBuildLog>
      <compressBuildLog>false</compressBuildLog>
      <saveOutput>false</saveOutput>
      <disabled>false</disabled>
      <replyTo>$DEFAULT_REPLYTO</replyTo>
    </hudson.plugins.emailext.ExtendedEmailPublisher>
  </publishers>
  <buildWrappers>
    <hudson.plugins.build__timeout.BuildTimeoutWrapper>
      <strategy class="hudson.plugins.build_timeout.impl.AbsoluteTimeOutStrategy">
        <timeoutMinutes>600</timeoutMinutes>
      </strategy>
      <operationList>
        <hudson.plugins.build__timeout.operations.AbortOperation/>
      </operationList>
    </hudson.plugins.build__timeout.BuildTimeoutWrapper>
    <hudson.plugins.timestamper.TimestamperBuildWrapper/>
    <com.cloudbees.jenkins.plugins.sshagent.SSHAgentBuildWrapper>
      <credentialIds>
        <string>e0958a95-204f-4c14-a66c-5e2be6c5d50a</string>
        <string>tcwg-buildslave-20220725</string>
        <ignoreMissing>false</ignoreMissing>
      </credentialIds>
    </com.cloudbees.jenkins.plugins.sshagent.SSHAgentBuildWrapper>
    <org.jenkinsci.plugins.credentialsbinding.impl.SecretBuildWrapper>
      <bindings>
        <org.jenkinsci.plugins.credentialsbinding.impl.StringBinding>
          <variable>TCWG_JIRA_TOKEN</variable>
          <credentialsId>TCWG_JIRA_TOKEN</credentialsId>
        </org.jenkinsci.plugins.credentialsbinding.impl.StringBinding>
      </bindings>
    </org.jenkinsci.plugins.credentialsbinding.impl.SecretBuildWrapper>
  </buildWrappers>
</project>