I originally went down a manual route as I wanted to understand the process, and since I’m familiar with manual installs this was the easiest path for me at the time.
My build script has been getting more complex lately and I’m quite pleased with it.
We tend to have several versions of code on the go, version x is live, x+1 is in UAT, and x+2 is in development. With all these versions around it’s important to keep track of changelogs, and to upgrade correctly x to x+1, and then x+1 to x+2 as we have found that going direct from x to x+2 can fail to uncover some bugs. Specifically this happens if a drupal update hook gets edited after it has been released to the client, but before it has run on live. Our builds always start from a copy of the live site.
This script makes sure the dev site is clean, emails a log summary of updates about to be applied, updates the site and emails me so I know what changed.
I’m using this on a dev site which is periodically updated to the latest master for testing.