<?xml version='1.0' encoding='UTF-8'?>
<project>
  <actions/>
  <description>Copies the build result to ~/hudsonbuild/downloads/galileo for later (manual) promotion to /downloads/releases/galileo</description>
  <keepDependencies>false</keepDependencies>
  <properties>
    <hudson.security.AuthorizationMatrixProperty>
      <useProjectSecurity>true</useProjectSecurity>
      <permission>hudson.model.Item.Delete:ROLE_CALLISTO-DEV</permission>
      <permission>hudson.model.Item.Workspace:ROLE_CALLISTO-DEV</permission>
      <permission>hudson.model.Run.Update:ROLE_CALLISTO-DEV</permission>
      <permission>hudson.model.Item.Configure:ROLE_CALLISTO-DEV</permission>
      <permission>hudson.model.Item.Build:ROLE_CALLISTO-DEV</permission>
      <permission>hudson.model.Run.Delete:ROLE_CALLISTO-DEV</permission>
    </hudson.security.AuthorizationMatrixProperty>
    <hudson.plugins.descriptionsetter.JobByDescription/>
  </properties>
  <scm class="hudson.scm.NullSCM"/>
  <canRoam>true</canRoam>
  <disabled>false</disabled>
  <jdk>(Default)</jdk>
  <triggers class="vector"/>
  <builders>
    <hudson.tasks.Ant>
      <targets></targets>
      <antName>(Default)</antName>
      <buildFile>promote.xml</buildFile>
      <properties>targetDirectory=/opt/users/hudsonbuild/downloads/galileo</properties>
    </hudson.tasks.Ant>
  </builders>
  <publishers>
    <hudson.tasks.Mailer>
      <recipients>richard.gronback@borland.com</recipients>
      <dontNotifyEveryUnstableBuild>false</dontNotifyEveryUnstableBuild>
      <sendToIndividuals>false</sendToIndividuals>
    </hudson.tasks.Mailer>
  </publishers>
  <buildWrappers/>
  <customWorkspace>/shared/galileo/build/galileo</customWorkspace>
</project>