I put my personal nanoc boilerplate setup on GitHub. Maybe you find the deployment process useful.
I assume you’re public html folder is called
htdocs/ and you can create new folders below your domains folder but outside
I also assume you use my Rakefile: upon
rake build it will checkout the branch ‘deploy’ and put all files from
output/ in there. Uploading from ‘deploy’ to the production server will only copy the HTML output, not the nanoc setup.
Initialize bare production git repository on the server:
git init --bare ~/doms/example.com/git
You’ll want automatic updates when you push to the server. Use git’s own
# add to ~/doms/example.com/git/hooks/post-receive echo "Updating website ..." cd /the/full/path/to/doms/example.com/htdocs || exit unset GIT_DIR git pull origin echo "Update complete."
Make it executable:
chmod +x post-receive
Initialize git repository in
htdocs/. This will point to the bare repository on the server and check out the current version:
# given you're in ~/doms/example.com/htdocs git init git remote add origin ../git # setup branch to pull from: git config branch.master.remote origin git config branch.master.merge refs/heads/deploy
Setup production server locally:
git remote add production ssh://email@example.com/~/doms/example.com/git/ git remote show production
Commit changes locally and put them on the server:
git commit rake build git push production deploy
You can push all branches via
git push productionto backup your code. Only the branch ‘deploy’ will be visible to the public.
I once combed this together from various sources:
- dead simple git deployment
- Using Git and a post-receive hook script for auto deployment
- Deploy websites using Git - the easy way
- Using Git for Deployment
Browse the blog archive