2009-05-20 17 views
9




¿Alguien sabe de una tarea de SFTP para msbuild? Nos gustaría automatizar nuestras implementaciones para la producción, pero por razones de seguridad no permitimos el acceso de archivos compartidos SMB desde nuestro entorno de desarrollo/prueba/construcción a la producción.¿Tarea SFTP para msbuild?

En este momento, los desarrolladores implementan el código cargando manualmente los archivos usando FileZilla, a través de una conexión SFTP. Esto es bastante propenso a errores, por lo que estamos planeando automatizar la carga de SFTP. Aunque si hay algún otro mecanismo que no sea SFTP que sea igual de seguro, me gustaría utilizarlo en su lugar.

Estoy pensando en simplemente usar la tarea msbuild "exec" y un cliente ftp de línea de comandos como pscp. Pero si alguien ha desarrollado una tarea de sftp, eso sería genial.


Gracias,
Richard

Respuesta

6

pudo instalar el WinSCP y sólo tiene que utilizar el MSBUILD Exec Task

que usa algo como lo siguiente para cargar un archivo ISO en un servidor después de una generación.

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

También necesitará/cargará antes de "c: \ myfile.iso". Esto también solicitará confirmación. Creo que podrías usar el comando y la "opción confirmar desactivado" en la línea de comando, pero en ese punto, probablemente sea más simple crear un pequeño script como lo sugirió Doug a continuación. – Jedidja

-1

edtFTPnet/PRO ofrece soporte completo para SFTP en .NET.

Si está interesado en comprar una copia, con gusto le escribiremos una tarea MSBuild SFTP, sería una característica útil. Datos de contacto en el sitio.

0

Instalar masilla y utilizar las herramientas de línea de comandos para sftp sus archivos al servidor. Use pagent y claves para evitar la codificación rígida o escribir su contraseña repetidamente.

6

Normalmente hago EXACTAMENTE como Ryu ha hecho y usa WinSCP, sin embargo, llevo un paso más allá y uso las capacidades de scripting de WinSCP para mapear una implementación más personalizable.

he detallado esto en un blog que detalla la configuración completa:

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

sin embargo, la esencia básica de la que está pasando en un archivo de secuencia de comandos para WinSCP como sigue:

<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> 

y mi escritura se parece a:

option batch abort 
option confirm off 

open ftp://myUsername:[email protected] 

put %1%\* 

rm FtpDeployment.config 

exit 
+0

También necesitaba agregar/consola a la línea de comandos de Exec para que esto funcione. – Jedidja

+1

Como informé en su entrada de blog, me gustó mucho esta versión, ya que FtpDeployment.config puede contener las credenciales y separa el trabajo de los desarrolladores (en el archivo .msbuild) de alguien que conoce las credenciales (FtpDeployment.config). Pongo un comando de cierre antes del comando de salida en FtpDeployment.config. Puede usar esta tarea si no tiene la tarea GetDate. Gracias esto ayudó mucho – granadaCoder

+0

Gracias por los comentarios - lo agregaré a la publicación – Doug

0

Hay hay muchas herramientas SSH basadas en .net, tome una y envuélvala usando la tarea msbuild (cree la suya) o la tarea ccnet.

Ant tiene una tarea scp, si es posible, llame a un script ANT desde msbuild. sea ​​cual sea el caso, use una clave pública/privada fuerte para el cifrado.

Cuestiones relacionadas