2010-07-21 3 views
1

J'ai un serveur de construction alimenté par CruiseControl.NET et une tâche d'exécution qui incrémente la version d'assemblage du projet avant de le construire. Je me demandais, y avait-il un moyen (une tâche CruiseControl.NET je ne sais pas) de soumettre ce fichier modifié à SVN? J'en ai besoin quand les projets d'installation sont construits manuellement (j'utilise msbuld donc ceux-ci ne sont pas construits en continu) tous les fichiers de construction auront les versions d'assemblage correctes lors du déploiement. Oh, et si quelqu'un sait comment construire des projets de déploiement & de configuration sur un serveur de construction sans Visual Studio installé, je meurs d'envie de savoir!CruiseControl.net soumet un fichier à SVN après qu'une tâche l'ait changé

EDIT:. Merci à Jonathan Stanton la mise à jour fonctionne maintenant, mais il crée un autre problème ... Le serveur de build boucles maintenant (sur le changement, il met à jour la version d'assemblage et engage le fichier Ce caouses le déclencheur onModify au feu si il met à jour la version d'assemblage et valide le fichier ...).

Que puis-je faire afin qu'il ne boucle pas? Puis-je ajouter une tâche SVN de mise à jour? Cela aidera-t-il?

+0

J'ai essayé d'ajouter une tâche de mise à jour après la tâche de validation, mais cela n'aide pas, elle trouve toujours des modifications à chaque exécution. –

+0

J'ai essayé de paramétrer le SVN pour utiliser revisionNumbers, pensant que je suis en train de mettre à jour mon répertoire de travail, ça l'empêchera de se construire, mais il est toujours actif ... –

Répondre

0

This question may help. J'ai abandonné les projets d'installation et de déploiement en raison de la dépendance VS.

+0

Dommage pour les projets d'installation et de déploiement cette question, merci pour l'instant. –

+0

J'utilise maintenant WiX pour générer des configurations .msi. Un couple d'aspérités avec intégration VS mais pratiquement indolore. – devstuff

2

La tâche suivante consignera le fichier dans le référentiel source.

<exec executable="svn.exe">   
    <buildArgs>commit -F <file you want to commit back> --username USER --password PASS --no-auth-cache --non-interactive --message 'CruiseControl.net build %CCNetLabel%'</buildArgs> 
    <buildTimeoutSeconds>10</buildTimeoutSeconds> 
</exec> 

Les liens suivants peuvent être utiles:

J'espère que cette aide

Jonathan

EDIT

Il y a une autre façon de faire ceci et cela est de permettre CC.NET de définir la version de construction dans la DLL . Il y a une procédure pas à pas sur la façon de le faire au coin de Damir intitulé Setting Up SVN and CC.NET for .NET Development

+0

Je me demandais juste si cela ne provoquerait plus le trigger de construction et créerait ainsi une boucle infinie d'incrémentation et de construction du même projet encore une fois? –

+0

Ceci fait en effet boucler le serveur de construction. Une construction complète se produit maintenant toutes les 5 minutes (avec une version augmentée). Que puis-je faire pour que la tâche ne déclenche pas la génération CruiseControl.NET? –

+0

Quel est le fichier que vous êtes en train de commettre? Si c'est la DLL, alors vous pouvez créer une nouvelle branche ou un nouveau dépôt qui contient juste ce fichier. Vous devez ensuite mapper cette branche/repo sur un nouveau répertoire, avoir une tâche qui a copié le fichier dll/file dans ce répertoire, puis exécuter la validation sur ce fichier. Vos autres projets devront alors surveiller cette nouvelle branche/repo pour ce fichier. –

0

Dans le post on my blog que Jonathan lié dans sa réponse J'ai décrit ma configuration qui ne fait aucun commit pendant le processus de construction. Au lieu d'augmenter le nombre de build pendant la construction, j'utilise simplement le numéro de révision de Subversion. Je préfère de cette façon parce que basé sur le numéro de build, je peux facilement récupérer les sources qui ont servi à faire la construction. Cela fonctionne très bien dans mon cas où toutes les constructions sont effectuées sur CruiseControl.NET. Construire des configurations manuellement est plus délicat dans ce cas car les fichiers de Subversion n'ont pas le bon numéro de build. Vous pouvez contourner ce problème en utilisant les fichiers déjà modifiés de CruiseControl.NET et les utiliser pour créer votre installation.Ou vous pourriez simplement construire la configuration en continu aussi bien.

Si cela ne fonctionne pas pour vous, vous devez prendre le chemin Filtered Source Control Block suggéré par DilbertDave. Mettez simplement votre fichier AssemblyInfo.cs (ou tout autre fichier que vous modifiez dans le processus de construction) dans exclusionFilters pour vous débarrasser de la boucle de construction.

Questions connexes