Is it me or it seems that people have forgotten (or never learnt) bash and make?
Automatic deployment is usually 3-10 steps that need to be run in a remote server. How's this better that a simple script that sshs into the server/servers, CDs into the project dir and does `make update`, which pulls some branch, runs any migrations and does an `apache gracefully` or similar whatever needed for the update?
I'm using Flightplan (https://github.com/pstadler/flightplan) which was posted on HN a while ago. All it does is provides a thin layer (albeit one with liberally applied DSL) on top of SSH which helps manage production/dev automated deployments.
+1 for using Node to provision Node apps. I have messed with flightplan and think it is awesome. It inspired me to make something that is a bit more like puppet (plugin based packaging, with helpers for common provisioning tasks) but in node (https://github.com/wesleytodd/wombat).
This is after two tries to get my company over to a Vagrant based setup, once using puppet and a second using bash scripts. Unfortunately neither got us off the ground fast enough to make it viable.
This has built-in tests and automatic rollback of failed deployments among other cool features. I've built custom deployment systems before (in bash and make) and they're hard to scale from yourself to more people. Bugs in your deployment tools suck.
or setup a git server and a webbook that calls the bash file on push. The bash script would copy the files, npm install, and cycle pm2 or forever. This is how I set up my servers. Seems less complicated.
The problem I have with setting up these things yourself is that I usually forget about how I set it up in the first place. Sure you might remember how you set it up 3 months down the road, but what about 3 years?
I try to use services or tools that do as much as possible out of the box. It means that I didn't have to manually configure much, which means it will be easier to understand after long periods of time. I know it isn't very hacker-like, but I personally feel there is a gray area that might create more problems than it solves, and I tend to stay on the "safe" side of things.
Automatic deployment is usually 3-10 steps that need to be run in a remote server. How's this better that a simple script that sshs into the server/servers, CDs into the project dir and does `make update`, which pulls some branch, runs any migrations and does an `apache gracefully` or similar whatever needed for the update?