Question




Quelqu'un sait-il d'une tâche SFTP pour msbuild? Nous aimerions automatiser nos déploiements à la production, mais pour des raisons de sécurité, nous ne permettons pas accès de partage de fichiers SMB de notre dev / test / environnement de build à la production.

En ce moment, les développeurs de déployer le code en téléchargeant manuellement les fichiers à l'aide FileZilla, via une connexion SFTP. C'est assez sujette à l'erreur, donc nous prévoyons d'automatiser le téléchargement SFTP. Bien que s'il y a un mécanisme autre que SFTP qui serait tout aussi sûr, je serais heureux d'utiliser à la place.

Je pense à utiliser simplement la tâche msbuild « exec », et une ligne de commande client FTP tel que pscp. Mais si quelqu'un construit une tâche sftp déjà, ce serait bien sûr formidable.


Merci,
Richard

Était-ce utile?

La solution

Pourrait installer WinSCP et il suffit d'utiliser le MsBuild Exec Tâche

J'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"

Autres conseils

Je fais habituellement EXACTEMENT comme Ryu a fait et utiliser WinSCP, mais je prends un peu plus loin et d'utiliser 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

mais 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:myPassword@ftp.myftpsite.com

put %1%\*

rm FtpDeployment.config

exit 

FileZilla prend également en charge ce de la ligne de commande .

Installer le mastic et utiliser les outils de ligne de commande pour sftp vos fichiers sur le serveur. Utilisez Pagent touches et pour éviter hardcoding ou en tapant votre mot de passe à plusieurs reprises.

Il y a beaucoup d'outils SSH .NET, prendre un et l'envelopper en utilisant la tâche msbuild (créer votre propre) ou tâche CCNet.

Ant a une tâche scp, si possible appeler un script ANT de msbuild. tout cas une forte utilisation de clés publique / privée pour le chiffrement.

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

Si vous êtes intéressé à acheter une copie que nous serions heureux d'écrire une tâche MSBuild SFTP pour vous - ce serait une fonctionnalité très pratique. Coordonnées sur le site.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top