Skip to content

Instantly share code, notes, and snippets.

@garethr
Created September 6, 2009 10:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save garethr/181755 to your computer and use it in GitHub Desktop.
Save garethr/181755 to your computer and use it in GitHub Desktop.
Sample fabric build file for a Django project
config.project_name = 'sample'
config.repo_address = 'http://path/to/repo'
def server():
config.fab_hosts = ['{ip address}']
config.path = '/srv/sample'
config.fab_user = '{username}'
config.virtualhost_path = "configs/"
config.group = '{username}'
def setup():
require('path')
require('group')
sudo('mkdir -p $(path); chown $(fab_user):$(group) -R $(path)')
run('cd $(path); mkdir releases; mkdir shared; mkdir packages;', fail='ignore')
def deploy():
require('fab_hosts')
require('path')
import time
config.release = time.strftime('%Y%m%d%H%M%S')
upload_tar_from_svn()
symlink_current_release()
install_site()
restart_webserver()
def upload_tar_from_svn():
require('release', provided_by=[deploy])
local('svn export $(repo_address) $(release)')
local('tar -pczf $(release).tar.gz $(release)')
put('$(release).tar.gz', '$(path)/packages/')
run('cd $(path)/releases && tar zxf ../packages/$(release).tar.gz')
local('rm -fr $(release)')
local('rm $(release).tar.gz')
def install_site():
"Add the virtualhost file to apache"
require('release')
sudo('cd $(path)/releases/$(release); cp $(virtualhost_path)$(project_name) /etc/apache2/sites-available/')
sudo('cd /etc/apache2/sites-available/; a2ensite $(project_name)')
sudo('mkdir /var/log/apache2/$(project_name)', fail='ignore')
def symlink_current_release():
"Symlink our current release"
require('release')
run('cd $(path); rm releases/previous; mv releases/current releases/previous;', fail='ignore')
run('cd $(path); ln -s $(release) releases/current')
def restart_webserver():
"Restart the web server"
sudo('/etc/init.d/apache2 restart')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment