I need to support multiple deployments to various customers. Their servers could be on anything.<p>I can access them, but I don't want them to be able to directly checkout code from my Github repo.<p>The only tool I'm familiar with is Capistrano, and as far as I know, requires access on the production machine to the source control repository. That's not what I want in this situation... Any ideas or suggestions?
It sounds like Capistrano's `deploy_via` option is what you're looking for:<p><a href="http://bu.chsta.be/blog/2013-02-24/capistrano-deployment-strategies-deploy-via-a-copy/" rel="nofollow">http://bu.chsta.be/blog/2013-02-24/capistrano-deployment-str...</a>
If you use ssh for your deployments, look up "ssh agent forwarding". It allows you to temporarily use credentials from your own local machine to perform remote operations.
Take a stable version, put it into a zip, put that onto a HTTPS server, and then give them a deployment script which downloads via wget and unpacks it.<p>Amazon's S3 will host the zip file for pennies.
No matter what you'll have code on their servers. Some languages have obfuscation/encryption you can use.<p>Overall from a tech perspective, I'd suggest building the app into containers (docker), so the computer they use at least becomes less important. Not sure what that means for users of Windows.<p>(Docker won't protect against code theft but is a nice abstraction so the host OS matters less)