2009-07-10 7 views
4

J'espère que quelqu'un peut m'aider avec ceci. Avoir TeamCity opérationnel et faire des builds sur divers projets. J'aimerais pouvoir copier/déployer une build de TeamCity réussie sur un serveur de test automatiquement. Je pensais utiliser PowerShell pour le faire, mais je suis ouvert à d'autres idées. Quelqu'un peut-il me fournir des informations sur la façon dont je peux accomplir cela.Comment copier une build pour tester le serveur?

Merci.

+0

Pouvez-vous nous dire dans quelle langue l'application est écrite? –

+0

L'application est écrite en C# .Net. C'est une application basée sur le Web que je voudrais copier sur un serveur web de test ... – Jason

Répondre

4

J'utilise WGet. Voici les instructions pour former l'URL de la ville de l'équipe. Vous pouvez faire un WGet in powershell, mais si vous vouliez seulement PowerShell pour cette fonctionnalité, vous pouvez simplement utiliser un wget utility for windows.

EDIT: Voici un exemple de notre déploiement de QA (a changé de nom pour protéger les coupables):

"C:\Program Files (x86)\NcFTP\wget.exe" "http://teamcityserver.domain.com:8111/guestAuth/repository/download/bt6/.lastFinished/Artificat.ear" 

L'emplacement du wget n'est pas pertinent, à savoir là où il se trouve. La partie guestAuth du paramètre spécifie le type d'authentification (dans notre cas, nous avons autorisé l'autorisation d'invité à ne pas avoir à se soucier des mots de passe - il s'agit d'un serveur interne uniquement et protégé par des pare-feu). Les options sont dans la documentation à laquelle je suis lié.

L'autre caractéristique intéressante des paramètres est le bt6. C'est la clé unique de la construction, et est différent pour chaque projet. Vous pouvez découvrir ce que c'est en naviguant sur le site de la ville de l'équipe à la configuration de cette construction - il sera là. Il y a aussi des instructions pour référencer la configuration par nom, mais nous avons trouvé que c'était trop bavard pour déranger. Je l'ai mis en œuvre pour nos applications aujourd'hui.

+0

Pouvez-vous donner un exemple ... Je suppose que je dois être en mesure de transmettre les informations d'identification pour que la copie fonctionne aussi bien ..? – Jason

+0

Wget.exe était quelque chose que vous deviez installer/déployer sur le serveur ..? – Jason

+0

Oui, c'est un petit exécutable. Vous pouvez l'obtenir ici: http://pages.interlog.com/~tcharron/wgetwin.html – Yishai

1

Utiliser msbuild. J'ai trouvé cela très utile car nous pouvons ajouter des étapes personnalisées telles que la modification des fichiers de configuration, l'archivage des builds live et la notification des modifications.

Voici un script de construction que vous pouvez trouver utile. Il précompile l'application, puis la copie dans le répertoire de déploiement.

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Deploy"> 

    <PropertyGroup> 
     <WebsitePublishDirectory>Artifacts\Website</WebsitePublishDirectory> 
     <WebsiteDeployDirectory>\\SERVERNAME\Path\to\web\root</WebsiteDeployDirectory> 
     <WebsiteProject>[Project name here]</WebsiteProject> 
    </PropertyGroup> 

    <Target Name="Deploy"> 
     <RemoveDir Directories="$(WebsitePublishDirectory)" /> 

     <AspNetCompiler 
      VirtualPath="test" 
      PhysicalPath="$(WebsiteProject)" 
      TargetPath="$(WebsitePublishDirectory)" 
      Force="true" 
      Debug="false" /> 

     <ItemGroup> 
      <PublishedFiles Include="$(WebsitePublishDirectory)\**" /> 
     </ItemGroup> 

     <Copy SourceFiles="@(PublishedFiles)" DestinationFolder="$(WebsiteDeployDirectory)\%(RecursiveDir)" /> 
    </Target>  
</Project> 
+1

Dans votre ligne "Copier" est-il un moyen de spécifier les informations d'identification ..? Ou comment avez-vous autorisé le script msbuild à publier sur l'autre serveur ..? – Jason

+1

Je le fais en faisant fonctionner les TeamCity Build Agents sous un compte qui a des permissions d'écriture sur les différents répertoires de construction. Vous pouvez également utiliser les tâches de la communauté MSBuild pour télécharger les fichiers via FTP. –

+0

JayArr pour le "WebsiteProject" J'essaie de spécifier le fichier .csproj pour notre application web, mais TeamCity continue de signaler qu'il ne peut pas le trouver ... – Jason

0

Je créé un poste Créer script dans Visual Studio comme ceci:

c: \ TeamCityBuild \ pt_build.bat
sortie 0

ensuite sur le TC I-serveur avoir un .bat qui ressemble à ceci:

utilisation nette r: \ 192.168.16.85 \ WebSite p assword /USER:domain.com\administrator
xcopy "C: \ TeamCityBuild \ chemin \ WebSite *" "r \"/R/O/E
r: \ 192.168.16.85 \ WebSite/DELETE
si errorlevel 1 goto buildFAILED
: construireOK
echo Wehej !!!
sortie 0
: buildFAILED
echo Oh NOOO !!!
sortie 1

'R:' est un lecteur connecté au serveur de test.La gestion des erreurs est nécessaire uniquement pour éviter les erreurs de script lorsque quelqu'un construit le projet sur un environnement sans la structure de dossier correcte.

Jusqu'à présent, tout fonctionne très bien!

1

Vous pouvez également installer un agent TeamCity sur le serveur de test. C'est en fait comme cela que TeamCity a été conçu pour être utilisé.

+0

Dans mon cas cela n'a pas fonctionné depuis que mon projet web avait beaucoup de les fichiers qui n'étaient pas inclus dans Subversion. Lorsque TeamCity l'a créé, il a effacé tous ces fichiers et n'a ajouté que ceux de subversion. – Zooking

+1

Une tâche de génération TeamCity peut prendre tous les artefacts de construction d'une autre construction. Les fichiers ne doivent pas être en SVN. Vous indiquez simplement une tâche de génération à exécuter sur le serveur de test et récupérez les artefacts de la dernière génération réussie. –

+0

Ok, je vais regarder comment les artefacts fonctionnent et voir si je peux le faire fonctionner. Merci! – Zooking

Questions connexes