
Ask HN: How do you deploy to external Windows servers? - alpaca_almanac
I&#x27;m trying to find a clean and fast way to deploy files to a remote windows server. Here&#x27;s what I&#x27;ve tried so far:<p>* cygwin + rsync (myriad file permission issues, absolute nightmare to set up)<p>* WinSSHD + SFTP (works, IIS file permissions are OK, but transfers are extremely slow)<p>My final option is to enable Windows file sharing and use robocopy (Window&#x27;s closest equivalent to rsync) but I am concerned about security issues.<p>Are there any other options I should be looking at? I&#x27;m not keen on Octopus deploy because I think it&#x27;s overkill to have a web UI for something that should amount to one or two lines of code in a build script.<p>To be honest this has been an ongoing problem I always face, and I always end up just remoting to the production server and copy+pasting files over RDP. It&#x27;s an awful experience, and it needs to end. What are my options?
======
UnoriginalGuy
What about FTPS (not to be confused with SFTP)? You can use Filezilla Server
which is a no-hassle setup and in my experience works great on Windows. It has
a full UI but can also use an XML file for configuration, just use /reload-
config to pull in your XML changes.

FTPS is also supported by a lot of clients including WinSCP which is extremely
fast and great (WinSCP also supports SFTP) and Visual Studio's publish[0].

[0] [http://weblogs.asp.net/scottgu/vs-2010-web-
deployment](http://weblogs.asp.net/scottgu/vs-2010-web-deployment)

PS - One problem we had with WinSCP is sometimes after it had done a transfer
the WinSCP process wouldn't terminate. It would sit in memory forever. We had
to build a script which goes through and kills every WinSCP process older than
several hours.

------
wanghq
> I'm trying to find a clean and fast way to deploy files to a remote windows
> server.

Recently AWS CodeDeploy started to support on-premises servers
([http://docs.aws.amazon.com/codedeploy/latest/userguide/how-t...](http://docs.aws.amazon.com/codedeploy/latest/userguide/how-
to-configure-on-premises-host.html)). Basically you register your Windows
servers by installing a CodeDeploy agent, then you can manage your deployment
in the AWS Console or by API/CLI. The files to be deployed are from github or
S3.

It might be overkill. I haven't tried this on-premises support, but just to
tell an option here.

------
mdpm
TeamCity -> Octopus Deploy. If you're tracking dvcs revisions with builds for
an 'edge' env, or building for the test/master branch (using gitflow style)
you're rarely in the interface, as your CI should kick off builds and tests.

Having an interface somewhere devoted to deployments, status, failures and
such is actually useful. Additionally, if you're needing multiparty sign-off
for release to certain environments, there's that capability.

------
kogir
It really depends what you're deploying. Presumably, you're using .NET or SQL
Server, or you'd not be using Windows.

In my experience making everything run in IIS (with activation, if needed) and
using msdeploy to deploy to IIS and SQL Server was the best setup.

------
bitshepherd
You could use a configuration management framework like Chef. Granted, it
takes a bit longer to put in place as opposed to a just-get-it-done method,
but the end result is something that is repeatable and, hopefully, less
painful to triage.

------
maouida
\- If you are deploying from Visual Studio, there is a built in deployment
manager but it has to be enabled on IIS first.

\- Other option is to connect trough RDP and copy/paste.

------
alpaca_almanac
Ultimately I got cygwin+rsync working by editing /etc/fstab and adding "noacl"
to the mount arguments then restarting the server.

