Je ne fais que commencer avec CruiseControl.NET et nAnt et je ne comprends pas vraiment comment fonctionne tout le processus. Nous avons actuellement la plupart de nos solutions dans Visual Source 'Safe', et le serveur de construction Label chaque version automatiquement en utilisant le fichier AssemblyInfo.Utilisation de CruiseControl pour copier le dossier SVN de la tête dans un dossier Release
Nous migrons nos projets VSS en SVN, et avons modifié les fichiers de construction de projet en conséquence pour vérifier et mettre à jour les respositories SVN. Ce que nous voulons réaliser, c'est d'avoir une copie de la source dans le contrôle de source, qui correspond exactement à la version du projet en cours de déploiement.
Notre SVN est configuré ainsi:
svn://solution/
TRUNK/
RELEASES/
1.0.0/
1.2.0/
BRANCHES/
Alors, quand on force construire notre solution, avec sa version AssemblyInfo définie comme 1.3.0, nous voulons que le serveur de build pour copier le répertoire trunk, dans les COMMUNIQUES /1.3.0/ répertoire.
La commande SVN est assez simple. svn copy src/répertoire dst/répertoire. Mais où devrais-je mettre cette commande, et comment puis-je obtenir le numéro de version pour la destination?
Sur le serveur de build, ceci est un exemple d'un fichier .xml:
<sourcecontrol type="svn">
<trunkUrl>svn://project/trunk</trunkUrl>
<workingDirectory>D:\Builds\project\Src</workingDirectory>
<executable>C:\Subversion\bin\svn.exe</executable>
<username>sf_service_dev</username>
<password>SFx4vi-r</password>
<tagOnSuccess>true</tagOnSuccess>
<cleanCopy>true</cleanCopy>
</sourcecontrol>
Dans le fichier .build du projet, nous avons ce (et beaucoup plus bien sûr):
<target name="Deploy_Release">
<property name="fileandpathformyfile" value="${CCNetWorkingDirectory}\Bin\project.exe"/>
<echo message="fileandpathformyfile is ${fileandpathformyfile}."/>
<property name="ReleaseNumber" value="${fileversioninfo::get-file-version(fileversioninfo::get-version-info(fileandpathformyfile))}"/>
<echo message="ReleaseNumber has been detected to be ${ReleaseNumber}."/>
<!--Use version as needed-->
<!--Create the release direcory-->
<mkdir dir="${CCNetWorkingDirectory}\..\Releases\${ReleaseNumber}"/>
<!--Copy stuff to the release directory-->
<copy todir="${CCNetWorkingDirectory}\..\Releases\${ReleaseNumber}">
<fileset basedir="${CCNetWorkingDirectory}\bin">
<include name="*.dll" />
<include name="*.exe" />
<include name="*.config" />
<include name="*.xml" />
<include name="*.stp" />
</fileset>
</copy>
</target>
Maintenant, si je veux exécuter une commande SVN pour copier $ {trunkURL} vers $ {trunkURL} /../ releases/$ {ReleaseNumber}, comment ferais-je cela et dans quel fichier irait-il? Comment je le comprends pour le moment, soit nous devons obtenir le ReleaseNumber du fichier .build, dans le fichier .xml, et exécuter un à partir de là. Ou, nous devons passer par le trunkURL du .XML au .build, et exécuter une commande svn à partir du fichier .build.
Aidez s'il vous plaît!
Avez-vous utilisé nAnt pendant un certain temps ou avez-vous commencé à utiliser CC.Net et nAnt en même temps? Juste curieux de savoir pourquoi vous n'utilisez pas msbuild. – Ryu
J'ai commencé à utiliser les deux en même temps. Pour nos projets plus anciens, nous effectuons une compilation locale, testons sur SOA de production et déployons à partir de là. –