Skip to content

Commit

Permalink
Updated fabfile
Browse files Browse the repository at this point in the history
  • Loading branch information
tobyontour committed May 25, 2015
1 parent 8546b60 commit b3bd84e
Showing 1 changed file with 31 additions and 23 deletions.
54 changes: 31 additions & 23 deletions fabfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@

from fabric.api import local
from fabric.contrib.files import upload_template
from fabric.context_managers import shell_env
from fabric.api import run, local, hosts, cd, env

import json, fabric
Expand All @@ -18,18 +19,24 @@ def run_tests():
def _get_config(key="live"):
with open("secrets.json") as f:
data = json.loads(f.read())

if key not in data:
raise Exception("Key '%(key)s' not in %(filename)s" % {'key': key, 'filename': "secrets.json"})
secrets = data[key]
env.user = secrets['SHELL_USER']
env.hosts = [secrets['DOMAIN']]

missing = []
for key in ["SECRET_KEY", "SHELL_USER", "DOMAIN", "DB_NAME", "DB_USER", "DB_PASS", "DB_HOST"]:
if key not in secrets or len(secrets[key]) == 0:
missing.append(key)
for k in ["SECRET_KEY", "SHELL_USER", "DOMAIN", "DB_NAME", "DB_USER", "DB_PASS", "DB_HOST"]:
if k not in secrets or len(secrets[k]) == 0:
missing.append(k)
if missing:
raise Exception("Missing values in secrets.json: " + ", ".join(missing))

env.user = secrets['SHELL_USER']
env.hosts = [secrets['DOMAIN']]
secrets['project'] = data['project']
secrets['gituser'] = data['gituser']
secrets['venv'] = "/home/%s/%s/env" % (secrets['SHELL_USER'], secrets['DOMAIN'])
secrets['settings'] = 'config.settings.%(key)s' % {'key': key}
return secrets

def test():
Expand All @@ -43,11 +50,16 @@ def live():
secrets['RELEASE'] = 'live'

def setup_python_dreamhost():
'''
Install a custom version of python. This version can be reused in future by other sites.
'''
# Install python
if not fabric.contrib.files.exists("Python-2.7.3"):
run("wget http://www.python.org/ftp/python/2.7.3/Python-2.7.3.tgz")
run("tar zxf Python-2.7.3.tgz")
run("rm Python-2.7.3.tgz")
with cd("Python-2.7.3"):
# --prefix is where it will be installed
run("./configure --prefix=$HOME/Python27")
run("make")
run("make install")
Expand All @@ -63,8 +75,6 @@ def setup_venv():
venv = "/home/%s/%s/env" % (secrets['SHELL_USER'], secrets['DOMAIN'])

if not fabric.contrib.files.exists(venv):
# Next we install virtualenv then make a new environment under the domain
# that we created in step 2 and finally switch into this environment:
run("PYTHONPATH=/home/%(shell_user)s/bin pip install virtualenv" % {'shell_user': secrets['SHELL_USER']})
run("PYTHONPATH=/home/%(shell_user)s/bin virtualenv %(venv)s" % {'shell_user': secrets['SHELL_USER'], 'venv': venv})

Expand All @@ -75,27 +85,25 @@ def setup_passenger(force=False):
secrets,
backup=False)

def deploy():

context = {
'venv': "/home/%s/%s/env" % (secrets['SHELL_USER'], secrets['DOMAIN']),
'project': 'basic-blog',
'gituser': 'tobyontour',
'settings': 'config.settings.live',
}
context.update(secrets)

#run_tests()
def createsuperuser():
django.settings_module('config.settings.live')
with cd("/home/%(SHELL_USER)s/%(DOMAIN)s" % context):
with shell_env(SECRET_KEY=context['SECRET_KEY'], DB_NAME=context['DB_NAME'], DB_USER=context['DB_USER'], DB_PASS=context['DB_PASS'], DB_HOST=context['DB_HOST']):
run("PYTHONPATH=%(venv)s/bin:/home/%(SHELL_USER)s/%(DOMAIN)s/%(project)s %(venv)s/bin/django-admin createsuperuser --settings=%(settings)s" % context)

def deploy(server='test'):
run_tests()
setup_passenger()
context = secrets
with cd("/home/%(SHELL_USER)s/%(DOMAIN)s" % context):
# Make sure that the media directory exists
run("mkdir -p public/media")
run("mkdir -p public/static")
#run("rm -rf " + project)
run("rm -rf %(project)s" % context)
# run("git clone https://%(gituser)s@bitbucket.org/%(gituser)s/%s(project)" % context)
# run("git clone git://github.com/%(gituser)s/%(project)s.git" % context)
run("git clone git://github.com/%(gituser)s/%(project)s.git" % context)
run("%(venv)s/bin/pip install -r basic-blog/requirements.txt" % context)

run("SECRET_KEY=%(SECRET_KEY)s %(venv)s/bin/python %(project)s/manage.py collectstatic --settings=%(settings)s" % context)
run("SECRET_KEY=%(SECRET_KEY)s %(venv)s/bin/python %(project)s/manage.py migrate --settings=%(settings)s" % context)
#manage.py syncdb
run("SECRET_KEY=%(SECRET_KEY)s %(venv)s/bin/python %(project)s/manage.py collectstatic --noinput --settings=%(settings)s" % context)
with shell_env(DB_NAME=context['DB_NAME'], DB_USER=context['DB_USER'], DB_PASS=context['DB_PASS'], DB_HOST=context['DB_HOST']):
run("SECRET_KEY=%(SECRET_KEY)s %(venv)s/bin/python %(project)s/manage.py migrate --settings=%(settings)s" % context)

0 comments on commit b3bd84e

Please sign in to comment.