<?xml version='1.0' encoding='UTF-8'?>
<project>
  <actions/>
  <description>This job gets the latest contributions from galileo build files (from HEAD) and invokes the Buckminster based builder. &#xd;
Results can be seen in &#xd;
http://build.eclipse.org/galileo/buckyBuild/buildresults/&#xd;
and a peek at update site categories can be seen at &#xd;
http://build.eclipse.org/galileo/buckyBuild/buildresults/final&#xd;
</description>
  <logRotator>
    <daysToKeep>5</daysToKeep>
    <numToKeep>10</numToKeep>
  </logRotator>
  <keepDependencies>false</keepDependencies>
  <properties>
    <hudson.security.AuthorizationMatrixProperty>
      <useProjectSecurity>true</useProjectSecurity>
      <permission>hudson.model.Run.Update:thallgren</permission>
      <permission>hudson.model.Item.Build:gobrien</permission>
      <permission>hudson.model.Item.Build:thallgren</permission>
      <permission>hudson.model.Item.Build:ROLE_CALLISTO-DEV</permission>
      <permission>hudson.model.Item.Configure:gobrien</permission>
      <permission>hudson.model.Item.Configure:thallgren</permission>
      <permission>hudson.model.Item.Configure:ROLE_CALLISTO-DEV</permission>
      <permission>hudson.model.Run.Delete:thallgren</permission>
      <permission>hudson.model.Item.Workspace:gobrien</permission>
      <permission>hudson.model.Item.Workspace:thallgren</permission>
      <permission>hudson.model.Item.Workspace:ROLE_CALLISTO-DEV</permission>
      <permission>hudson.model.Item.Delete:thallgren</permission>
    </hudson.security.AuthorizationMatrixProperty>
    <hudson.plugins.descriptionsetter.JobByDescription/>
  </properties>
  <scm class="hudson.scm.CVSSCM">
    <cvsroot>:pserver:anonymous@dev.eclipse.org:/cvsroot/callisto</cvsroot>
    <module>org.eclipse.galileo.build</module>
    <canUseUpdate>true</canUseUpdate>
    <flatten>true</flatten>
    <isTag>false</isTag>
    <excludedRegions></excludedRegions>
  </scm>
  <assignedNode>master</assignedNode>
  <canRoam>false</canRoam>
  <disabled>false</disabled>
  <jdk>Java 6.0 SR4</jdk>
  <triggers class="vector">
    <hudson.triggers.SCMTrigger>
      <spec># every 15 mins past the hour 
0 * * * *
15 * * * *
30 * * * *
45 * * * *
</spec>
    </hudson.triggers.SCMTrigger>
    <com.progress.hudson.ScheduleFailedBuildsTrigger>
      <spec>* * * * *</spec>
    </com.progress.hudson.ScheduleFailedBuildsTrigger>
  </triggers>
  <builders>
    <hudson.tasks.Ant>
      <targets>runBuckyBuild</targets>
      <antName>Ant 1.7.1</antName>
      <buildFile>/shared/galileo/buckyBuild/org.eclipse.galileo.tools/build.xml</buildFile>
    </hudson.tasks.Ant>
  </builders>
  <publishers>
    <hudson.tasks.Mailer>
      <recipients>david_williams@us.ibm.com</recipients>
      <dontNotifyEveryUnstableBuild>false</dontNotifyEveryUnstableBuild>
      <sendToIndividuals>false</sendToIndividuals>
    </hudson.tasks.Mailer>
  </publishers>
  <buildWrappers/>
</project>