Can't deploy from Tentacle on Azure VM to Azure Web site via FTP

I’ve setup the Octopus server and a listening tentacle on an Azure VM. I have an automated build running on Visual Studio Online that creates a package for my web site (via OctoPack) and publishes it to Octopus’ built-in NuGet server. That’s all working fine, but when I create a release and try to deploy it to my Azure website, the FTP task fails with the following error:

Unable to connect: An I/O exception occurred.
Fatal 13:57:54
An I/O exception occurred.
EnterpriseDT.Net.Ftp.ControlChannelIOException: An I/O exception occurred.
at EnterpriseDT.Net.Ftp.FTPControlSocket.LC5b1tiqSvd()
at EnterpriseDT.Net.Ftp.FTPControlSocket.lq1PqiuWmSk()
at EnterpriseDT.Net.Ftp.FTPControlSocket.RAQb1J67FVc()
at EnterpriseDT.Net.Ftp.FTPClient.AJMflaYCwG(FTPControlSocket )
at EnterpriseDT.Net.Ftp.Ssl.SSLFTPClient.Connect()
at EnterpriseDT.Net.Ftp.SecureFTPConnection.Connect()
at Octopus.Tentacle.Integration.Ftp.FtpSynchronizer.SynchronizationSession.ConnectAndSynchronize() in y:\work\db516cd4dfb6f424\source\Octopus.Tentacle\Integration\Ftp\FtpSynchronizer.cs:line 99
at Octopus.Tentacle.Integration.Ftp.FtpSynchronizer.SynchronizationSession.Execute() in y:\work\db516cd4dfb6f424\source\Octopus.Tentacle\Integration\Ftp\FtpSynchronizer.cs:line 89
at Octopus.Tentacle.Integration.Ftp.FtpSynchronizer.Synchronize(FtpSynchronizationSettings settings) in y:\work\db516cd4dfb6f424\source\Octopus.Tentacle\Integration\Ftp\FtpSynchronizer.cs:line 16
at Octopus.Tentacle.Procedures.Implementations.Ftp.FtpUploadProcedure.Upload(ProcedureState state, CancellationToken cancel) in y:\work\db516cd4dfb6f424\source\Octopus.Tentacle\Procedures\Implementations\Ftp\FtpUploadProcedure.cs:line 69
at Pipefish.Async.CaptiveThread1.ThreadAction(Action2 action, Guid operationId, IActivitySpace space, Guid captiveThreadId) in c:\TeamCity\buildAgent\work\cf0b1f41263b24b9\source\Pipefish\Async\CaptiveThread.cs:line 114

At first, I thought this was a firewall configuration problem on the Azure VM running the tentacle so I verified that I had opened up ports 20 and 21. Then, I installed FileZilla on the Azure VM and I was able to connect to the web site’s FTP endpoint without any problems. I also tried both active and passive modes on the FTP task but hit the same error. Any suggestions on how to proceed?

Also, is there a better way to deploy to an Azure web site?

Jim Lamb

Hi Jim,

The FTP client that Octopus uses has an issue with Azure VM FTP due to common disconnection problems that other FTP clients can workaround with reconnecting processes.
We have found a ways for Octopus to work with Azure in the following discussion:

I hope this helps!

Thanks, Vanessa. I actually ended up installing WAWSDeploy on my tentacle VM and calling that from my Deploy.ps1 which works pretty well. It uses MSDeploy underneath to do a differential push to the Azure web site.