Hacker News new | ask | show | jobs
by marrone 6596 days ago
This is what I have set up. A Git repository on the server. I push all my code to the repo via ssh.

On the server there are Dev, Staging, and Production environments. Dev and Staging are bare checkouts from the git repo. I have deploy shell scripts that automate deploying to both (checking out from source control and running database migrations). The process should be that code is deployed to Dev, then Staging and finally to Production.

The Production environment is NOT a checkout from source control. It is an exact mirror of the Staging environment. And the deploy script to production does the following:

- tags source control with the new release number

- creates a tar.gz backup of the production directories

- does a database backup dump

- then uses rsync to copy files from the staging web directories to the production directories.

- lastly runs migration scripts on the prod database