<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->

<cruisecontrol>
    <project name="qpid-java-jmstck"
             buildafterfailed="false">

        <listeners>
            <currentbuildstatuslistener file="logs/${project.name}/status.txt"/>
        </listeners>

        <modificationset quietperiod="30">
            <buildstatus logdir="logs/qpid-cpp-trunk/"/>
            <buildstatus logdir="logs/qpid-java-trunk/"/>
        </modificationset>

        <schedule>
            <ant target="tck"
                 uselogger="false"
                 time="0000"
                 timeout="3600"
                 antworkingdir="scripts">
            </ant>
        </schedule>
        
        <publishers>
            <artifactspublisher dest="artifacts/${project.name}"
                                file="${env.TS_HOME}/tck1.log"/>
            <artifactspublisher dest="artifacts/${project.name}"
                                file="${env.TS_HOME}/tck2.log"/>

            <onfailure>
                <artifactspublisher dest="artifacts/${project.name}"
                file="${env.CC_HOME}/jmstck-broker.log"/>               
            </onfailure>
            
            <email subjectprefix="RHEL5/64" mailhost="localhost"
                   returnaddress="qpid-test-cruisecontrol@qpid-test.lab.bos.redhat.com"
                   buildresultsurl="http://qpid-test.lab.bos.redhat.com:8080/buildresults/${project.name}"
                   skipusers="false"
                   reportsuccess="fixes"
                   spamwhilebroken="true">
                <always address="amqp-list@redhat.com"/>
            </email>
        </publishers>
    </project>
</cruisecontrol>
