X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/ea335ef160fbe5f8488e8bef51a4706163ba9964..00a90d6175599e055f5a84697c8388d81ac1b007:/fabfile.py diff --git a/fabfile.py b/fabfile.py index 2897a8dd..399f1c2f 100644 --- a/fabfile.py +++ b/fabfile.py @@ -44,6 +44,7 @@ def common(): env.path = os.path.join(env.sandbox, env.project_name) env.target = os.path.join(env.path, 'bin', 'python') + # ========= # = Tasks = # ========= @@ -60,18 +61,26 @@ def setup(): """ require('hosts', 'sandbox', provided_by=[staging, production]) - run("mkdir -p %(path)s; mkdir -p %(path)s/www/wsgi;" % env) + run("mkdir -p %(path)s; mkdir -p %(path)s/www/wsgi; mkdir -p %(path)s/www/media" % env) # make a git mirror - run("""\ -cd %(path)s; + run("""cd %(path)s; git clone %(giturl)s mirror; cd %(path)s/mirror; git pull""" % env, pty=True) run('%(virtualenv)s %(path)s' % env, pty=True) - run('cd %(path)s; mkdir -p releases; mkdir -p shared; mkdir -p packages;' % env, pty=True) + run('cd %(path)s; rm -rf releases shared packages; mkdir -p releases; mkdir -p shared; mkdir -p packages;' % env, pty=True) + + # symlink static content + run("""cd %(path)s/www/media; +ln -sf %(path)s/releases/current/%(project_name)s/static static +ln -sf %(path)s/lib/python2.6/site-packages/django/contrib/admin/media admin-media +mkdir -p dynamic +""" % env) + run('cd %(path)s/releases; ln -s . current; ln -s . previous' % env, pty=True) + deploy() @@ -90,7 +99,7 @@ def deploy(): upload_wsgi_script() # upload_vhost_sample() install_requirements() - copy_localsettings() + hardlink_localsettings() symlink_current_release() migrate() django_compress() @@ -152,19 +161,27 @@ def upload_wsgi_script(): def install_requirements(): "Install the required packages from the requirements file using pip" - print '>>> install requirements' + + print '>>> Instaling global requirements' require('release', provided_by=[deploy]) run('cd %(path)s; %(path)s/bin/pip install -r %(path)s/releases/%(release)s/%(project_name)s/config/requirements.txt' % env, pty=True) + print '>>> Instaling site requirements' + + with settings(warn_only=True): + run('cd %(path)s; %(path)s/bin/pip install -r %(sandbox)s/etc/%(project_name)s/requirements.txt' % env, pty=True) + + +def hardlink_localsettings(): + "Hardlink localsettings.py from root directory to release directory (if this file exists)" + print ">>> Hardlink localsettings" + require('release', 'path', provided_by=[deploy]) + require('sandbox', provided_by=[staging, production]) + + # hardlink localsettings + with settings(warn_only=True): + run('ln %(sandbox)s/etc/%(project_name)s/localsettings.py %(path)s/releases/%(release)s/%(project_name)s' % env) -#def copy_localsettings(): -# "Copy localsettings.py from root directory to release directory (if this file exists)" -# print ">>> copy localsettings" -# require('release', 'path', provided_by=[deploy]) -# require('sandbox', provided_by=[staging, production]) -# -# with settings(warn_only=True): -# run('cp %(sandbox)s/etc/%(project_name)s/localsettings.py %(path)s/releases/%(release)s/%(project_name)s' % env) def symlink_current_release(): "Symlink our current release"