<?xml version="1.0" encoding="UTF-8"?><project>
  <actions/>
  <description>&lt;!-- Managed by Jenkins Job Builder --&gt;</description>
  <keepDependencies>false</keepDependencies>
  <disabled>false</disabled>
  <displayName>TCWG CCC Update jenkins containers online-node</displayName>
  <blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>
  <blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
  <concurrentBuild>true</concurrentBuild>
  <canRoam>true</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>30</daysToKeep>
        <numToKeep>100</numToKeep>
        <artifactDaysToKeep>-1</artifactDaysToKeep>
        <artifactNumToKeep>-1</artifactNumToKeep>
      </strategy>
    </jenkins.model.BuildDiscarderProperty>
    <hudson.model.ParametersDefinitionProperty>
      <parameterDefinitions>
        <hudson.model.StringParameterDefinition>
          <name>node</name>
          <description>NODE_NAME to bring online</description>
          <defaultValue/>
        </hudson.model.StringParameterDefinition>
        <hudson.model.StringParameterDefinition>
          <name>build_num</name>
          <description>BUILD_NUMBER to wait for to finish</description>
          <defaultValue/>
        </hudson.model.StringParameterDefinition>
      </parameterDefinitions>
    </hudson.model.ParametersDefinitionProperty>
  </properties>
  <scm class="hudson.scm.NullSCM"/>
  <builders>
    <hudson.tasks.Shell>
      <command>#!/bin/bash
set -ex

# Below logic was adapted from jenkins-scripts/tcwg_bmk-build.sh:
# benchmark().

ssh_cmd=(ssh -p$JENKINS_SSH_PORT -l $JENKINS_SSH_USER
  -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null)

# ??? Below loop can fail for reasons I can't understand.
#     "|| true" should the subshell always exit with "0",
#     and I can't see how "| tee | sed" can fail.
# Bring the node back online as we exit due to any reason,
# and ignore shell errors so that we exit only when see
# "Finished: " line in the console.log.
trap "${ssh_cmd[*]} $JENKINS_SSH_SERVER online-node $node" EXIT
set +e

while true; do
  sleep 60

  (timeout 1m \
    "${ssh_cmd[@]}" $JENKINS_SSH_SERVER console \
    tcwg-update-jenkins-containers $build_num || true) \
    | tee console.log | sed -e "s/^/$node: /"

  build_status=$(tail -n 1 console.log)
  case "$build_status" in
    "Finished: "*) break ;;
  esac
done
</command>
      <unstableReturn>0</unstableReturn>
    </hudson.tasks.Shell>
  </builders>
  <publishers/>
  <buildWrappers>
    <hudson.plugins.build__timeout.BuildTimeoutWrapper>
      <strategy class="hudson.plugins.build_timeout.impl.AbsoluteTimeOutStrategy">
        <timeoutMinutes>60</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>
      <user>e0958a95-204f-4c14-a66c-5e2be6c5d50a</user>
      <ignoreMissing>false</ignoreMissing>
    </com.cloudbees.jenkins.plugins.sshagent.SSHAgentBuildWrapper>
    <org.jenkinsci.plugins.buildnamesetter.BuildNameSetter>
      <template>#${BUILD_NUMBER}-#${build_num}-${node}</template>
    </org.jenkinsci.plugins.buildnamesetter.BuildNameSetter>
  </buildWrappers>
</project>