It has been a while since I posted something, need to become a bit regular at this. Anyway let us talk about deployment. Once you have built your shiny new app it is time to show case it to the world/client. There are several ways to do so. I would like to share how I had been doing it in the past and how I now do it.
The Old Way
Where everyone seems to start, using an FTP client such as FileZilla. This is pretty simple to do, however it gets tedious over time. The biggest drawback for me was the inability to track changes in the code base, so sometimes I would end up FTPing the whole code base again which really sucks and is a great way to introduce bugs. Granted it does have its advantages for quick fixes and the like.
Introducing GIT FTP
After sometime I started using git for version control but still I was FTPing stuff until I came across git-ftp, it is basically a shell script FTP client but unlike the other desktop FTP clients it can track changes to the code base and upload only files that have changed. This made deployment pretty simple, once I had it setup all I had to do after committing changes was
$ git ftp push and am done. You can also setup a git-ftp-ignore file which works the same as the .gitignore file. Until recently this was sufficient for me but still I wanted an easier way deploy code automatically once I had pushed it to Bitbucket or GitHub
Enter Deployment Services
In my search I came across dploy.io which is a code deployment service. One simply links a Bitbucket or GitHub repo, configure a server to deploy to and once you push any code it automatically deploys. One can also setup different servers to deploy to, such as a staging server, a production server and so on. There are several such deployment services but I prefer dploy.io for its simplicity and wide array of server setups supported, plus they have a limited free plan which you can use to test the service to see if it suits your needs.
Honorable mention also goes to ftploy.com which works the same as dploy.io but it doesn't have as much flexibility.
I think such tools makes deployment a breeze.
So what deployment methods or tools are you using?