tarefa SFTP para msbuild?
-
23-08-2019 - |
Pergunta
Alguém sabe de uma tarefa SFTP para msbuild? Nós gostaríamos de automatizar nossas implementações de produção, mas por razões de segurança que não permitem o acesso SMB file-share da nossa dev / test / ambiente de construção para a produção.
Agora, os desenvolvedores implantar código fazendo o upload manualmente os arquivos usando FileZilla, através de uma conexão SFTP. Isso é muito propenso erro de, por isso, estamos planejando para automatizar o carregamento SFTP. Embora se há algum outro mecanismo que não SFTP que seria tão seguro, eu ficaria feliz em usar isso em seu lugar.
Estou pensando em usar apenas a tarefa msbuild "exec", e uma linha de comando cliente FTP, como pscp. Mas se alguém construiu uma tarefa sftp já, que naturalmente seria ótimo.
Obrigado,
Richard
Solução
foi possível instalar o WinSCP e usar apenas o MsBuild Exec Task
Eu usei algo como o seguinte para fazer upload de um arquivo ISO para um servidor após uma compilação.
winscp.exe sftp://root:password;@192.168.0.200:22/uploaddir/ "c:\myfile.iso"
Outras dicas
Eu costumo fazer exatamente como Ryu fez e usar WinSCP, no entanto i dar um passo adiante e usar recursos de script do WinSCP para mapear uma implantação mais personalizável.
Eu detalhou isso em um post que detalha a configuração completa:
http: // www.diaryofaninja.com/blog/2010/09/21/continuous-integration-tip-1-ndash-ftp-deployment
No entanto, a essência básica do que é passar em um arquivo script para WinSCP da seguinte forma:
<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>
e meu script se parece com:
option batch abort
option confirm off
open ftp://myUsername:myPassword@ftp.myftpsite.com
put %1%\*
rm FtpDeployment.config
exit
FileZilla também suporta isso a partir do linha de comando .
Instale massa e usar as ferramentas de linha de comando para sftp seus arquivos para o servidor. Use pagent e as teclas para evitar codificar ou digitando sua senha repetidamente.
Existem muitas .net ferramenta SSH baseado, tomar uma e envolvê-la usando tarefa msbuild (criar o seu próprio) ou tarefa ccnet.
Ant tem uma tarefa scp, se possível chamar um script ANT de msbuild. qualquer que seja caso de uso / chave privada pública forte para criptografia.
edtFTPnet / PRO oferece suporte completo para SFTP em .NET.
Se você está interessado em comprar uma cópia que ficaria feliz em escrever uma tarefa MSBuild SFTP para você - seria um recurso útil. Detalhes de contato no site.