2011-05-13 3 views
1

J'ai un problème avec la configuration de CC.Net. Ma configuration actuelle pour le projet ressemble à ceci (aseptisé pour se débarrasser de choses confidentielles):CruiseControl.Net continue à construire même s'il n'y a pas de nouvelle source

<project name="WebApp"> 
    <workingDirectory>c:\cc\WebApp\Code</workingDirectory> 
    <artifactDirectory>c:\cc\WebApp\Artifacts</artifactDirectory> 
    <webURL>http://example.com/ccnet</webURL> 
    <modificationDelaySeconds>10</modificationDelaySeconds> 
    <triggers> 
     <intervalTrigger seconds="30" name="continuous" /> 
    </triggers> 


<sourcecontrol type="multi"> 
<sourceControls autogetsource="true"> 
<svn> 
    <trunkUrl>svn+ssh://[email protected]/webapp/trunk</trunkUrl> 
    <executable>C:\Program Files\SlikSvn\bin\svn.exe</executable> 
    <username>build</username> 
    <password>********</password> 
    <revisionNumbers>true</revisionNumbers> 
</svn> 
<svn> 
    <trunkUrl>svn+ssh://[email protected]/dataservice/trunk</trunkUrl> 
    <executable>C:\Program Files\SlikSvn\bin\svn.exe</executable> 
    <username>build</username> 
    <password>********</password> 
    <revisionNumbers>true</revisionNumbers> 
    <workingDirectory>..\dataservice</workingDirectory> 
</svn> 
<svn> 
    <trunkUrl>svn+ssh://[email protected]/WCFProxyClasses/WCFProxyClasses/trunk</trunkUrl> 
    <executable>C:\Program Files\SlikSvn\bin\svn.exe</executable> 
    <username>build</username> 
    <password>********</password> 
    <revisionNumbers>true</revisionNumbers> 
    <workingDirectory>..\proxies\WCFProxyClasses</workingDirectory> 
</svn> 
</sourceControls> 
</sourcecontrol> 

    <tasks> 
     <msbuild> 
      <executable>C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe</executable> 
      <projectFile>WebApp/WebApp.msbuild</projectFile> 
      <targets>BeforeBuild;Build;AfterBuild</targets> 
      <timeout>300</timeout> 
      <logger>C:\Program Files\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MsBuild.dll</logger> 
     </msbuild> 
    </tasks> 

    <publishers> 
     <rss/> 
     <xmllogger /> 
     <statistics /> 
     <!-- Email build report to development and QA team --> 
     <email from="[email protected]" mailhost="mailhost" mailport="25" includeDetails="TRUE" mailhostUsername="" mailhostPassword="" useSSL="FALSE"> 
     <users>     
      <user name="Developer" group="devs" address="[email protected]"/> 
     </users> 
     <groups> 
      <group name="devs"/> 
     </groups> 
     <converters/> 
     <modifierNotificationTypes> 
      <NotificationType>Always</NotificationType> 
     </modifierNotificationTypes> 
     </email> 
     <modificationHistory onlyLogWhenChangesFound="true" /> 
    </publishers> 
</project> 

Nous avons plusieurs cibles de contrôle de source parce que le projet d'application Web dépend des autres. Je ne suis pas sûr que ce soit la cause du problème (auquel je suis arrivé) ou non. J'ai peu d'expérience (aucune!) Avec CC.Net alors je ne sais pas vraiment où chercher. Nous avons d'autres projets dans le fichier de configuration, mais aucun d'entre eux n'a plusieurs cibles de contrôle de source et ils se comportent tous comme prévu.

Le problème avec ce projet est que, indépendamment des changements de contrôle de la source, il tente simplement de construire toutes les 30 secondes! Pour autant que je sache, l'étiquette <revisionNumbers> est censée faire attendre CC.Net pour une nouvelle révision de la source avant de la reconstruire, mais elle continue de construire et d'envoyer des emails, toutes les 30 secondes.

Si vous avez besoin de plus d'informations je le ferai. J'espère que quelqu'un reconnaît ce qui ne va pas ici ou a déjà connu le problème et pourrait avoir des suggestions pour moi.

Merci!

EDIT -

Si elle aide, le projet défini ci-dessus échoue pour construire chaque fois. Cela est dû au fait que certaines DLL tierces référencées dans le projet ne sont pas disponibles sur le serveur CC.Net. Est-ce que la construction ratée pourrait la faire «réessayer» toutes les 30 secondes?

+0

Je ne vois pas 'autogetsource = "true"' 'sur ' dans la documentation, êtes-vous sûr qu'il est correct?Le paramètre < 'devrait par défaut s'appuyer uniquement sur' IfModificationExists ', de sorte que vos contrôles sources doivent signaler les modifications à chaque vérification. Pourquoi utilisez-vous plusieurs blocs de contrôle de source ici au lieu de svn externals? – skolima

Répondre

2

Essayez

  • buildCondition="IfModificationExists" mentionnent explicitement (bien qu'il devrait être le default) ...
  • Laisser un seul contrôle de code source à la fois de trouver le coupable qui maintient le déclenchement de la construction.
  • Vérifiez le journal (les sorties svn) pour voir ce qui est mis à jour (comme Pedro offert).

HTH

+0

Essayé un contrôle de source unique à la fois et tous les trois ont travaillé de leur propre chef. Cela semble être un problème avec le contrôle multi-sources. J'ai retravaillé le fichier de configuration avec des déclencheurs de projet à la place. Tout semble fonctionner maintenant. – Anthony

0

Sur le résumé de construction du projet, qu'est-ce qu'il indique comme ayant été modifié? Pour svn, vous devriez voir une section qui dit "Modifications depuis la dernière construction" suivie par une liste de fichiers, l'heure d'arrivée, et les commentaires checkin.

Y at-il dans la construction qui vérifie les fichiers dans svn

Edit (AssemblyInfo.cs peut-être?):

Vous mentionnez dans votre mise à jour qu'il ne compile pas à chaque fois. Jusqu'à ce que cela soit réglé, je suppose que vous allez obtenir de telles tentatives. Pourquoi il ne cesse de réessayer, cependant, je ne suis pas entièrement sûr. Une différence entre vos scripts et ceux que nous utilisons est que nous n'utilisons pas la balise "revisionNumbers" pour les éléments svn (bien que je ne sois pas sûr que ce soit le problème.)

Vous mentionnez également qu'il a trouvé 534 modifications depuis dernière construction. Ce nombre augmente-t-il pour chaque nouvelle construction? Si le nombre augmente, vous pouvez avoir quelque chose d'autre vérifiant un fichier ou des fichiers dans le dépôt, ce qui entraînerait le lancement d'une autre version.

+0

Le dernier journal de construction indique "Demande d'intégration: \t Build (IfModificationExists) déclenché à partir de continu". "Modifications depuis la dernière version (534)" – Anthony

Questions connexes