Re: No Builder Added Error

Steve Murphy <[email protected]> Tue, 20 Sep 2011 10:33:02 +0100
Newsgroups gmane.comp.java.cruise-control.user
Message-ID <[email protected]>
I've found the problem (woohoo), only took me 2 days :) .  There is a 
erroneous '-' character after one of the comment blocks (line 158 in the 
config below, or 212 in my actual config file).

Using the -debug option when launching CruiseControl gave me a bit more 
information, and led me to conclude that the issue was in the composite 
schedule section

[main     ] DEBUG PluginXMLHelper  - treating child with adder composite 
adding net.sourceforge.cruisecontrol.builders.CompositeBuilder@1865b28
[main     ] DEBUG PluginXMLHelper  - treating child with adder schedule 
adding net.sourceforge.cruisecontrol.Schedule@1cac6db
[main     ] ERROR Main             - error setting config file on controller

After carefully going through each ant call several times I finally spotted 
the offending character.

When there is a problem with the configuration file does it display the line 
number anywhere?

Thanks,
Steve


-----Original Message----- 
From: Steve Murphy
Sent: Monday, September 19, 2011 2:16 PM
To: [email protected]
Subject: Re: [Cruisecontrol-user] No Builder Added Error

By removing things in a more systematic way I've narrowed it down.  When I
remove the first project in the file (PROJ_32_Linux) cruise starts up ok.
If I undo that change and remove the 2nd project (PROJ_FULL_32_Linux) the
'no builders added' error still occurs.  So there is something wrong in the
PROJ_32_Linux project.  Apart from some of the paths and names being project
depended the only difference that I can tell are the 'requireModification'
setting and the 'composite time' setting.

Maybe a fresh pair of eyes can find the fault.

Regards,
Steve

Here is my config file, I have removed some of log merge files & some of the
emails and change some names, but other than that it's the same.

<cruisecontrol>
  <!-- Load environment variables -->
    <property environment="env" toupper="true" />
    <property name="CC"         value="${env.CCDIR}" />
    <property name="CC.proj"     value="${CC}/projects/CC" />
    <property name="ant.home"    value="${env.ANT_HOME}"  />
    <property name="xsldir"     value="${CC}/webapps/cruisecontrol/xsl" />
   <property name="cc.css"
value="${CC}/webapps/cruisecontrol/css/cruisecontrol.css" />
    <property name="PROJ.res"     value="${CC}/testing/work.xtc/ESCONF" />
    <property name="PROJ.blddir"     value="${CC}/projects/cc/PROJbld" />
    <property name="svn.PROJ"     value="${CC}/projects/CC/PROJ" />
    <property name="testing.utils"
value="${CC}/projects/testing/work.xtc/ESSHARED" />
    <property name="svn.id"     value="escc" />
    <property name="svn.password"     value="CC1adm1n" />
    <property name="svn.root"     value="http://my-svn/PROJ/trunk/tip" />
    <property name="svn.module"     value="PROJ" />
    <property name="testing.svn"     value="http://my-svn/testware/tip" />
    <property name="ant.buildFile"     value="antPROJ_UNIX.xml" />

    <plugin name="project">
    <bootstrappers>
        <svnbootstrapper
            localWorkingCopy="${svn.PROJ}"
            username="${svn.id}"
            password="${svn.password}"
         />
    </bootstrappers>

    <modificationset quietPeriod="10" >
          <svn
              repositoryLocation="${svn.root}"
              localWorkingCopy="${svn.PROJ}"
              username="${svn.id}"
              password="${svn.password}"
              useLocalRevision="false"
          />
    </modificationset>


     <log>
       <merge dir="${PROJ.logs}/BUILD-PROJ.xml"/>
       <merge dir="${PROJ.logs}/INIT-UTILS.xml"/>
       <merge dir="${PROJ.logs}/CONF1.xml"/>
       <merge dir="${PROJ.logs}/CONF1-64.xml"/>
       <merge dir="${PROJ.logs}/CONF2.xml"/>
       <merge dir="${PROJ.logs}/CONF2-64.xml"/>
     </log>


    <publishers>
        <htmlemail mailHost="wgateout.mycompany.com"
returnAddress="${return.address}" CSS="${cc.css}" logDir="${PROJ.logs}"
XSLDir="${xsldir}" spamWhileBroken="true" reportSuccess="true" >
            <map alias="stevenm" address="[email protected]" />
            <map alias="dev1" address="[email protected]" />
            <map alias="dev2" address="[email protected]" />

            <always address="[email protected]" />

            <ignore user="local" />
            <ignore user="User" />

            <ignore user="SVN" />
<!-- ignore while system is developed -->
            <ignore user="dev1" />
            <ignore user="dev2" />

        </htmlemail>

    </publishers>
    </plugin>

<!-- START OF CONFIDENCE TEST RUN PROJECT -->
  <project buildAfterFailed="false" name="PROJ_32_Linux"
requireModification="true">

    <labelincrementer separator="_" defaultLabel="BUILD_1"
preBuildIncrementer="true" />

    <property name="PROJ.logs"             value="${CC}/logs/PROJ_32_Linux"
/>
    <property name="return.address"
value="[email protected]" />
    <property name="CC.lable"             value="${projectlabel}" />
    <property name="buildPub.file"
value="logs/PROJ_32_Linux/buildstatus.txt" />
    <property name="build.Name"         value="CONF32_Linux" />
    <property name="build.bit"             value="32" />

    <listeners>
      <currentbuildstatuslistener file="logs/PROJ_32_Linux/buildstatus.txt"
/>
    </listeners>

    <!-- Run the PROJ-CC.bat file -->
    <schedule>
       <composite>
          <ant buildfile="${ant.buildFile}" uselogger="false"
anthome="${ant.home}" antworkingdir="${CC.proj}" saveLogDir="${PROJ.logs}"
target="echoenv">
                      <property name="BUILD_NAME" value="${build.Name}" />
                      <property name="BIT" value="${build.bit}" />
                      <property name="CC_LOGS" value="${PROJ.logs}" />
          </ant>
<!-- Disable until system works
<ant buildfile="${ant.buildFile}" uselogger="false" anthome="${ant.home}"
antworkingdir="${CC.proj}" saveLogDir="${PROJ.logs}" target="STARTMAIL">
                      <property name="BUILD_NAME" value="${build.Name}" />
                      <property name="BIT" value="${build.bit}" />
                      <property name="CC_LOGS" value="${PROJ.logs}" />
          </ant>
-->
          <ant buildfile="${ant.buildFile}" uselogger="false"
anthome="${ant.home}" antworkingdir="${CC.proj}" saveLogDir="${PROJ.logs}"
target="INITRES">
                      <property name="BUILD_NAME" value="${build.Name}" />
                      <property name="BIT" value="${build.bit}" />
                      <property name="CC_LOGS" value="${PROJ.logs}" />
          </ant>
          <ant buildfile="${ant.buildFile}" uselogger="false"
anthome="${ant.home}" antworkingdir="${CC.proj}" saveLogDir="${PROJ.logs}"
target="CLEANRES">
                      <property name="BUILD_NAME" value="${build.Name}" />
                      <property name="BIT" value="${build.bit}" />
                      <property name="CC_LOGS" value="${PROJ.logs}" />
          </ant>
          <ant buildfile="${ant.buildFile}" uselogger="false"
anthome="${ant.home}" antworkingdir="${CC.proj}" saveLogDir="${PROJ.logs}"
target="BUILD">
                      <property name="BUILD_NAME" value="${build.Name}" />
                      <property name="BIT" value="${build.bit}" />
                      <property name="CC_LOGS" value="${PROJ.logs}" />
          </ant>
          <ant buildfile="${ant.buildFile}" uselogger="false"
anthome="${ant.home}" antworkingdir="${CC.proj}" saveLogDir="${PROJ.logs}"
target="COPYTEST">
                      <property name="BUILD_NAME" value="${build.Name}" />
                      <property name="BIT" value="${build.bit}" />
                      <property name="CC_LOGS" value="${PROJ.logs}" />
          </ant>
          <ant buildfile="${ant.buildFile}" uselogger="false"
anthome="${ant.home}" antworkingdir="${CC.proj}" saveLogDir="${PROJ.logs}"
target="INITUTILS">
                      <property name="BUILD_NAME" value="${build.Name}" />
                      <property name="BIT" value="${build.bit}" />
                      <property name="CC_LOGS" value="${PROJ.logs}" />
          </ant>
<!-- 
          <ant buildfile="${ant.buildFile}" uselogger="false"
anthome="${ant.home}" antworkingdir="${CC.proj}" saveLogDir="${PROJ.logs}"
target="DUMMYTEST">
                      <property name="BUILD_NAME" value="${build.Name}" />
                      <property name="BIT" value="${build.bit}" />
                      <property name="CC_LOGS" value="${PROJ.logs}" />
          </ant>
-->-
          <ant buildfile="${ant.buildFile}" uselogger="false"
anthome="${ant.home}" antworkingdir="${CC.proj}" saveLogDir="${PROJ.logs}"
target="RUNTEST">
                      <property name="BUILD_NAME" value="${build.Name}" />
                      <property name="BIT" value="${build.bit}" />
                      <property name="CC_LOGS" value="${PROJ.logs}" />
          </ant>

          <ant buildfile="${ant.buildFile}" uselogger="false"
anthome="${ant.home}" antworkingdir="${CC.proj}" saveLogDir="${PROJ.logs}"
target="COPYRES">
                      <property name="BUILD_NAME" value="${build.Name}" />
                      <property name="BIT" value="${build.bit}" />
                      <property name="CC_LOGS" value="${PROJ.logs}" />
          </ant>
<!--
          <ant buildfile="${ant.buildFile}" uselogger="false"
anthome="${ant.home}" antworkingdir="${CC.proj}" saveLogDir="${PROJ.logs}"
target="DUMMYRES">
                      <property name="BUILD_NAME" value="${build.Name}" />
                      <property name="BIT" value="${build.bit}" />
                      <property name="CC_LOGS" value="${PROJ.logs}" />
          </ant>
          <ant buildfile="${ant.buildFile}" uselogger="false"
anthome="${ant.home}" antworkingdir="${CC.proj}" saveLogDir="${PROJ.logs}"
target="DUMMYSLEEP">
                      <property name="BUILD_NAME" value="${build.Name}" />
                      <property name="BIT" value="${build.bit}" />
                      <property name="CC_LOGS" value="${PROJ.logs}" />
          </ant>
          <ant buildfile="${ant.buildFile}" uselogger="false"
anthome="${ant.home}" antworkingdir="${CC.proj}" saveLogDir="${PROJ.logs}"
target="MOVEFILES">
                      <property name="BUILD_NAME" value="${build.Name}" />
                      <property name="BIT" value="${build.bit}" />
                      <property name="CC_LOGS" value="${PROJ.logs}" />
          </ant>
-->
          <ant buildfile="${ant.buildFile}" uselogger="false"
anthome="${ant.home}" antworkingdir="${CC.proj}" saveLogDir="${PROJ.logs}"
target="CHECKRES">
                      <property name="BUILD_NAME" value="${build.Name}" />
                      <property name="BIT" value="${build.bit}" />
                      <property name="CC_LOGS" value="${PROJ.logs}" />
          </ant>
       </composite>
    </schedule>
  </project>

<!-- START OF 32BIT NIGHTLY FULL TEST RUN PROJECT -->
  <project buildAfterFailed="false" name="PROJ_FULL_32_Linux"
requireModification="false">

    <labelincrementer separator="_" defaultLabel="BUILD_1"
preBuildIncrementer="true" />

<property name="PROJ.logs"     value="${CC}/logs/PROJ_FULL_32_Linux" />
<property name="return.address"
value="[email protected]" />
<property name="CC.lable"             value="${projectlabel}" />
<property name="buildPub.file"
value="logs/PROJ_FULL_32_Linux/buildstatus.txt" />
<property name="build.Name"         value="ESFULL32_Linux" />
<property name="build.bit"             value="32" />

    <listeners>
      <currentbuildstatuslistener
file="logs/PROJ_FULL_32_Linux/buildstatus.txt" />
    </listeners>

<!-- Run the PROJ-CC.bat file -->
    <schedule>
       <composite time="2300">
          <ant buildfile="${ant.buildFile}" uselogger="false"
anthome="${ant.home}" antworkingdir="${CC.proj}" saveLogDir="${PROJ.logs}"
target="echoenv">
                      <property name="BUILD_NAME" value="${build.Name}" />
                      <property name="BIT" value="${build.bit}" />
                      <property name="CC_LOGS" value="${PROJ.logs}" />
          </ant>
<!--
<ant buildfile="${ant.buildFile}" uselogger="false" anthome="${ant.home}"
antworkingdir="${CC.proj}" saveLogDir="${PROJ.logs}" target="STARTMAIL">
                      <property name="BUILD_NAME" value="${build.Name}" />
                      <property name="BIT" value="${build.bit}" />
                      <property name="CC_LOGS" value="${PROJ.logs}" />
          </ant>
-->
          <ant buildfile="${ant.buildFile}" uselogger="false"
anthome="${ant.home}" antworkingdir="${CC.proj}" saveLogDir="${PROJ.logs}"
target="INITRES">
                      <property name="BUILD_NAME" value="${build.Name}" />
                      <property name="BIT" value="${build.bit}" />
                      <property name="CC_LOGS" value="${PROJ.logs}" />
          </ant>
          <ant buildfile="${ant.buildFile}" uselogger="false"
anthome="${ant.home}" antworkingdir="${CC.proj}" saveLogDir="${PROJ.logs}"
target="CLEANRES">
                      <property name="BUILD_NAME" value="${build.Name}" />
                      <property name="BIT" value="${build.bit}" />
                      <property name="CC_LOGS" value="${PROJ.logs}" />
          </ant>
          <ant buildfile="${ant.buildFile}" uselogger="false"
anthome="${ant.home}" antworkingdir="${CC.proj}" saveLogDir="${PROJ.logs}"
target="BUILD">
                      <property name="BUILD_NAME" value="${build.Name}" />
                      <property name="BIT" value="${build.bit}" />
                      <property name="CC_LOGS" value="${PROJ.logs}" />
          </ant>
          <ant buildfile="${ant.buildFile}" uselogger="false"
anthome="${ant.home}" antworkingdir="${CC.proj}" saveLogDir="${PROJ.logs}"
target="COPYTEST">
                      <property name="BUILD_NAME" value="${build.Name}" />
                      <property name="BIT" value="${build.bit}" />
                      <property name="CC_LOGS" value="${PROJ.logs}" />
          </ant>
          <ant buildfile="${ant.buildFile}" uselogger="false"
anthome="${ant.home}" antworkingdir="${CC.proj}" saveLogDir="${PROJ.logs}"
target="INITUTILS">
                      <property name="BUILD_NAME" value="${build.Name}" />
                      <property name="BIT" value="${build.bit}" />
                      <property name="CC_LOGS" value="${PROJ.logs}" />
          </ant>
<!--
          <ant buildfile="${ant.buildFile}" uselogger="false"
anthome="${ant.home}" antworkingdir="${CC.proj}" saveLogDir="${PROJ.logs}"
target="DUMMYTEST">
                      <property name="BUILD_NAME" value="${build.Name}" />
                      <property name="BIT" value="${build.bit}" />
                      <property name="CC_LOGS" value="${PROJ.logs}" />
          </ant>
-->
          <ant buildfile="${ant.buildFile}" uselogger="false"
anthome="${ant.home}" antworkingdir="${CC.proj}" saveLogDir="${PROJ.logs}"
target="RUNTEST">
                      <property name="BUILD_NAME" value="${build.Name}" />
                      <property name="BIT" value="${build.bit}" />
                      <property name="CC_LOGS" value="${PROJ.logs}" />
          </ant>
          <ant buildfile="${ant.buildFile}" uselogger="false"
anthome="${ant.home}" antworkingdir="${CC.proj}" saveLogDir="${PROJ.logs}"
target="COPYRES">
                      <property name="BUILD_NAME" value="${build.Name}" />
                      <property name="BIT" value="${build.bit}" />
                      <property name="CC_LOGS" value="${PROJ.logs}" />
          </ant>
<!--
          <ant buildfile="${ant.buildFile}" uselogger="false"
anthome="${ant.home}" antworkingdir="${CC.proj}" saveLogDir="${PROJ.logs}"
target="DUMMYRES">
                      <property name="BUILD_NAME" value="${build.Name}" />
                      <property name="BIT" value="${build.bit}" />
                      <property name="CC_LOGS" value="${PROJ.logs}" />
          </ant>
          <ant buildfile="${ant.buildFile}" uselogger="false"
anthome="${ant.home}" antworkingdir="${CC.proj}" saveLogDir="${PROJ.logs}"
target="DUMMYSLEEP">
                      <property name="BUILD_NAME" value="${build.Name}" />
                      <property name="BIT" value="${build.bit}" />
                      <property name="CC_LOGS" value="${PROJ.logs}" />
          </ant>
          <ant buildfile="${ant.buildFile}" uselogger="false"
anthome="${ant.home}" antworkingdir="${CC.proj}" saveLogDir="${PROJ.logs}"
target="MOVEFILES">
                      <property name="BUILD_NAME" value="${build.Name}" />
                      <property name="BIT" value="${build.bit}" />
                      <property name="CC_LOGS" value="${PROJ.logs}" />
          </ant>
-->
          <ant buildfile="${ant.buildFile}" uselogger="false"
anthome="${ant.home}" antworkingdir="${CC.proj}" saveLogDir="${PROJ.logs}"
target="CHECKRES">
                      <property name="BUILD_NAME" value="${build.Name}" />
                      <property name="BIT" value="${build.bit}" />
                      <property name="CC_LOGS" value="${PROJ.logs}" />
          </ant>
       </composite>
    </schedule>
  </project>
</cruisecontrol>

-----Original Message----- 
From: Steve Murphy
Sent: Monday, September 19, 2011 11:38 AM
To: [email protected]
Subject: [Cruisecontrol-user] No Builder Added Error

Hello,

I’ve managed to break my CruiseControl configuration script.  When I start
cruise I get the following error message.  I’ve tried reverting back to a
backup and removing whole sections of the file, but I cannot pinpoint the
offending part of the script.

Does one of the numbers in the CruiseControlException error refer the the
line in the config file that is bad?

Thanks,
Steve

2011-09-19 09:07:06,307 [main     ] INFO  Main             - CruiseControl
Version 2.7.1 Compiled on September 4 2007 1821
2011-09-19 09:07:06,349 [main     ] INFO  XMLConfigManager - reading
settings from config file [/home/user1/cruise/config.xml]
2011-09-19 09:07:06,734 [main     ] ERROR Main             - error setting
config file on controller
net.sourceforge.cruisecontrol.CruiseControlException: no builders added
    at
net.sourceforge.cruisecontrol.util.ValidationHelper.fail(ValidationHelper.java:90)
    at
net.sourceforge.cruisecontrol.util.ValidationHelper.assertFalse(ValidationHelper.java:99)
    at
net.sourceforge.cruisecontrol.builders.CompositeBuilder.validate(CompositeBuilder.java:133)
    at net.sourceforge.cruisecontrol.Schedule.validate(Schedule.java:462)
    at
net.sourceforge.cruisecontrol.ProjectConfig.validate(ProjectConfig.java:112)
    at
net.sourceforge.cruisecontrol.CruiseControlConfig.handleProject(CruiseControlConfig.java:309)
    at
net.sourceforge.cruisecontrol.CruiseControlConfig.parse(CruiseControlConfig.java:124)
    at
net.sourceforge.cruisecontrol.CruiseControlConfig.<init>(CruiseControlConfig.java:104)
    at
net.sourceforge.cruisecontrol.config.XMLConfigManager.loadConfig(XMLConfigManager.java:88)
    at
net.sourceforge.cruisecontrol.config.XMLConfigManager.<init>(XMLConfigManager.java:80)
    at
net.sourceforge.cruisecontrol.CruiseControlController.setConfigFile(CruiseControlController.java:94)
    at net.sourceforge.cruisecontrol.Main.createController(Main.java:139)
    at net.sourceforge.cruisecontrol.Main.start(Main.java:114)
    at net.sourceforge.cruisecontrol.launch.Launcher.run(Launcher.java:244)
    at net.sourceforge.cruisecontrol.launch.Launcher.main(Launcher.java:108)
2011-09-19 09:07:06,736 [main     ] FATAL Main             - no builders
added


------------------------------------------------------------------------------
BlackBerry&reg; DevCon Americas, Oct. 18-20, San Francisco, CA
Learn about the latest advances in developing for the
BlackBerry&reg; mobile platform with sessions, labs & more.
See new tools and technologies. Register for BlackBerry&reg; DevCon today!
http://p.sf.net/sfu/rim-devcon-copy1
_______________________________________________
Cruisecontrol-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/cruisecontrol-user


------------------------------------------------------------------------------
BlackBerry&reg; DevCon Americas, Oct. 18-20, San Francisco, CA
Learn about the latest advances in developing for the
BlackBerry&reg; mobile platform with sessions, labs & more.
See new tools and technologies. Register for BlackBerry&reg; DevCon today!
http://p.sf.net/sfu/rim-devcon-copy1
_______________________________________________
Cruisecontrol-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/cruisecontrol-user 


------------------------------------------------------------------------------
All the data continuously generated in your IT infrastructure contains a
definitive record of customers, application performance, security
threats, fraudulent activity and more. Splunk takes this data and makes
sense of it. Business sense. IT sense. Common sense.
http://p.sf.net/sfu/splunk-d2dcopy1
_______________________________________________
Cruisecontrol-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/cruisecontrol-user