wonderbeyond
11/20/2015 - 7:34 AM

common fabfile.py(fabric task file)

common fabfile.py(fabric task file)

# vim: ft=python
from fabric.api import *
from fabric.contrib import project
from fabric.contrib.files import exists
from fabric.utils import warn
import os.path


# env.parallel = True
env.roledefs.update({
    'production_app_server': {
        'hosts': [
        ],
    },

    'test_app_server': {
        'hosts': [
        ],
    },

    'production_nginx_server': [
    ],
})
# env.user = 'webapps'
env.project_root = '... ...'


def upload_code():
    project.rsync_project(
        local_dir='./',
        remote_dir=env.project_root,
        default_opts='-rlvcpz',
        extra_opts='--exclude-from=./exclude.txt',
    )


def reload_app():
    run('touch %s' % os.path.join(env.project_root, 'myapp/wsgi.py'))


@task
@roles('test_app_server')
@with_settings(user='webapps')
@parallel
def upload_test():
    '''Upload code to test server'''
    upload_code()


@task
@roles('production_app_server')
def upload_production():
    '''Upload code to production server'''
    upload_code()


@task
@roles('test_app_server')
@with_settings(user='webapps')
@parallel
def reload_test():
    reload_app()


@task
def daily_test():
    execute(upload_test)
    execute(reload_test)