2009-05-20 16 views
9




Est-ce que quelqu'un connaît une tâche SFTP pour msbuild? Nous souhaitons automatiser nos déploiements en production, mais pour des raisons de sécurité, nous n'autorisons pas l'accès au partage de fichiers SMB depuis notre environnement de développement/test/build vers la production.Tâche SFTP pour msbuild?

À l'heure actuelle, les développeurs déploient du code en téléchargeant manuellement les fichiers à l'aide de FileZilla, via une connexion SFTP. C'est assez sujet aux erreurs, donc nous prévoyons d'automatiser le téléchargement SFTP. Bien qu'il y ait un mécanisme autre que SFTP qui soit aussi sûr, je serais heureux de l'utiliser à la place.

Je pense simplement à utiliser la tâche msbuild "exec" et un client ftp en ligne de commande tel que pscp. Mais si quelqu'un a déjà construit une tâche sftp, ce serait bien sûr génial.


Merci,
Richard

Répondre

6

pourrait installer WinSCP et il suffit d'utiliser le MsBuild Exec Task

J'ai utilisé quelque chose comme ce qui suit pour télécharger un fichier ISO sur un serveur après une compilation.

winscp.exe sftp://root:password;@192.168.0.200:22/uploaddir/ "c:\myfile.iso" 
+0

Vous aurez également besoin de/upload avant "c: \ myfile.iso". Cela vous demandera toujours confirmation. Je crois que vous pourriez utiliser la commande et "option confirm off" sur la ligne de commande, mais à ce stade, il est probablement plus simple de créer un petit script comme Doug suggéré ci-dessous. – Jedidja

-1

edtFTPnet/PRO offre un support complet pour SFTP dans .NET.

Si vous êtes intéressé par l'achat d'une copie, nous serions heureux d'écrire une tâche SFB MSBuild pour vous - ce serait une fonctionnalité pratique. Coordonnées du site

0

Installez putty et utilisez les outils de ligne de commande pour transférer vos fichiers vers le serveur. Utilisez pagent et les clés pour éviter le codage en dur ou en tapant votre mot de passe à plusieurs reprises.

6

Je fais habituellement EXACTEMENT comme Ryu l'a fait et j'utilise WinSCP, mais je vais encore plus loin et utilise les capacités de script de WinSCP pour mapper un déploiement plus personnalisable.

J'ai exposé en détail ce dans un billet de blog qui détaille la configuration complète:

http://www.diaryofaninja.com/blog/2010/09/21/continuous-integration-tip-1-ndash-ftp-deployment

cependant l'essentiel de base de celui-ci passe dans un fichier de script à WinSCP comme suit:

<Target Name="AfterBuild"> 
<!-- Set the path to your FTP program (winscp) --> 
<PropertyGroup> 
    <PathToWinSCP>"C:\Program Files (x86)\WinSCP\winscp.exe"</PathToWinSCP>   
</PropertyGroup> 
<!-- Get the date as a string for our log filename--> 
<GetDate Format="yyyyMMdd"> 
    <Output PropertyName="DateString" TaskParameter="Date"/> 
</GetDate> 
<!-- Convert the path to an absolute path --> 
<ConvertToAbsolutePath Paths="$(OutputPath)"> 
    <Output TaskParameter="AbsolutePaths" PropertyName="OutputPath"/> 
</ConvertToAbsolutePath> 
<!-- Fire WinSCP and give it your script files name 
    as well as passing it the parameter to this build --> 
<Exec Command="$(PathToWinSCP) /script=$(OutputPath)Deployment\FtpDeployment.config /parameter $(OutputPath) /log=$(OutputPath)FtpLog-$(DateString).txt" /> 
</Target> 

et mon script ressemble à:

option batch abort 
option confirm off 

open ftp://myUsername:[email protected] 

put %1%\* 

rm FtpDeployment.config 

exit 
+0

J'ai également besoin d'ajouter/console à la ligne de commande Exec pour que cela fonctionne. – Jedidja

+1

Comme je l'ai signalé sur votre entrée de blog, j'ai beaucoup aimé cette version, car FtpDeployment.config peut contenir les informations d'identification et sépare le travail des développeurs (dans le fichier .msbuild) de quelqu'un qui connaît les informations d'identification (FtpDeployment.config). Je mets une commande de fermeture avant la commande de sortie dans FtpDeployment.config. Vous pouvez utiliser cette tâche si vous n'avez pas la tâche GetDate. Merci cela a aidé alot – granadaCoder

+0

Merci pour les commentaires - je vais l'ajouter à la publication – Doug

0

Il Il y a beaucoup d'outil SSH basé sur .net, en prendre un et l'enrouler en utilisant la tâche msbuild (créer la vôtre) ou la tâche ccnet.

Ant a une tâche scp, si possible appelez un script ANT de msbuild. quel que soit le cas, utilisez une clé publique/privée forte pour le cryptage.

Questions connexes