|
|
|
|
@ -1,9 +1,10 @@ |
|
|
|
|
# -*- coding: utf-8 -*- |
|
|
|
|
from os.path import join, basename |
|
|
|
|
from collections import namedtuple |
|
|
|
|
from collections import namedtuple, OrderedDict |
|
|
|
|
|
|
|
|
|
from fabric.api import * |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
env.roledefs = { |
|
|
|
|
'dev': ['root@176.121.11.165'], |
|
|
|
|
'prod': ['root@176.121.11.162'], |
|
|
|
|
@ -21,15 +22,18 @@ apache2_conf = '/etc/apache2/sites-available/proj.com' |
|
|
|
|
settings_conf = join(REMOTE_HOME_DIR, 'proj/settings.py') |
|
|
|
|
services = ['nginx', 'apache2'] |
|
|
|
|
|
|
|
|
|
ticket_functions = {} |
|
|
|
|
|
|
|
|
|
stages = {} |
|
|
|
|
tickets = {} |
|
|
|
|
|
|
|
|
|
def ticket(func): |
|
|
|
|
if not callable(func): |
|
|
|
|
raise NotImplementedError('func must be a callable') |
|
|
|
|
ticket_functions[func.__name__] = func |
|
|
|
|
return func |
|
|
|
|
|
|
|
|
|
def stage(stage_num): |
|
|
|
|
def ticket(func): |
|
|
|
|
if not callable(func): |
|
|
|
|
raise NotImplementedError('func must be a callable') |
|
|
|
|
stages.setdefault(stage_num, OrderedDict()).update({func.__name__: func}) |
|
|
|
|
tickets.update({func.__name__: func}) |
|
|
|
|
return func |
|
|
|
|
return ticket |
|
|
|
|
|
|
|
|
|
def set_host(host): |
|
|
|
|
env.hosts = env.roledefs.get(host) |
|
|
|
|
@ -84,120 +88,132 @@ def pull(with_configs=False, func=None): |
|
|
|
|
run('git pull') |
|
|
|
|
if with_configs: |
|
|
|
|
put_configs() |
|
|
|
|
if func is not None and func in ticket_functions and callable(ticket_functions[func]): |
|
|
|
|
ticket_functions[func]() |
|
|
|
|
if func is not None and func in tickets and callable(tickets[func]): |
|
|
|
|
tickets[func]() |
|
|
|
|
call_state('start', only='apache2') |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def stage3_pre_final(): |
|
|
|
|
with cd(REMOTE_HOME_DIR): |
|
|
|
|
run('pip install pandas') |
|
|
|
|
run('pip install django-rosetta==0.7.6') |
|
|
|
|
run('git checkout master') |
|
|
|
|
run('git pull') |
|
|
|
|
call_state('stop') |
|
|
|
|
put_configs() |
|
|
|
|
run('python manage.py migrate conference 0001 --fake') |
|
|
|
|
run('python manage.py migrate conference') |
|
|
|
|
run('python manage.py migrate expobanner') |
|
|
|
|
run('python manage.py migrate theme 0001 --fake') |
|
|
|
|
run('python manage.py migrate theme 0002') |
|
|
|
|
run('python manage.py migrate article 0001 --fake') |
|
|
|
|
run('python manage.py migrate article 0002') |
|
|
|
|
run('python manage.py migrate stats_collector') |
|
|
|
|
run('python manage.py crontab remove') |
|
|
|
|
run('python manage.py crontab add') |
|
|
|
|
chown() |
|
|
|
|
call_state('start') |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def stage3_release(): |
|
|
|
|
call_state('stop') |
|
|
|
|
with cd(REMOTE_HOME_DIR): |
|
|
|
|
# run('python manage.py themeblog_to_blog') |
|
|
|
|
run('git fetch') |
|
|
|
|
run('git checkout stage3_release') |
|
|
|
|
run('git pull') |
|
|
|
|
# run('python manage.py migrate settings 0002 --fake') |
|
|
|
|
run('python manage.py migrate settings') |
|
|
|
|
run('python manage.py migrate article 0003') |
|
|
|
|
chown() |
|
|
|
|
call_state('start') |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def c_fix(): |
|
|
|
|
def stage_init(stage_num): |
|
|
|
|
with cd(REMOTE_HOME_DIR): |
|
|
|
|
call_state('stop', only='apache2') |
|
|
|
|
run('git fetch') |
|
|
|
|
run('git checkout stage{stage_num}'.format(stage_num=stage_num)) |
|
|
|
|
run('git pull') |
|
|
|
|
run('python manage.py migrate expobanner') |
|
|
|
|
if stage_num in stages and isinstance(stages[stage_num], dict): |
|
|
|
|
for func_name, func in stages[stage_num].iteritems(): |
|
|
|
|
func() |
|
|
|
|
call_state('start', only='apache2') |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def stage4_firstrun(): |
|
|
|
|
with cd(REMOTE_HOME_DIR): |
|
|
|
|
call_state('stop') |
|
|
|
|
run('git fetch') |
|
|
|
|
run('git checkout stage4') |
|
|
|
|
# run('git checkout -- proj/settings.py') |
|
|
|
|
pull(with_configs=True) |
|
|
|
|
run('python manage.py syncdb') |
|
|
|
|
ticket1374() |
|
|
|
|
ticket1393() |
|
|
|
|
ticket1392() |
|
|
|
|
ticket1384() |
|
|
|
|
ticket1395() |
|
|
|
|
ticket1384_p1() |
|
|
|
|
ticket1384_p2() |
|
|
|
|
t1443() |
|
|
|
|
call_state('start') |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ticket |
|
|
|
|
def ticket1395(): |
|
|
|
|
with cd(REMOTE_HOME_DIR): |
|
|
|
|
run('python manage.py accounts_check_url') |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ticket |
|
|
|
|
def ticket1374(): |
|
|
|
|
with cd(REMOTE_HOME_DIR): |
|
|
|
|
run('python manage.py migrate theme') |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ticket |
|
|
|
|
def ticket1393(): |
|
|
|
|
with cd(REMOTE_HOME_DIR): |
|
|
|
|
run('python manage.py migrate newsletter 0001 --fake') |
|
|
|
|
run('python manage.py migrate newsletter') |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ticket |
|
|
|
|
def ticket1392(): |
|
|
|
|
with cd(REMOTE_HOME_DIR): |
|
|
|
|
run('python manage.py migrate newsletter') |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ticket |
|
|
|
|
def ticket1384(): |
|
|
|
|
with cd(REMOTE_HOME_DIR): |
|
|
|
|
run('python manage.py migrate exposition 0001 --fake') |
|
|
|
|
run('python manage.py migrate exposition') |
|
|
|
|
run('python manage.py migrate conference') |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ticket |
|
|
|
|
def ticket1384_p1(): |
|
|
|
|
with cd(REMOTE_HOME_DIR): |
|
|
|
|
run('python manage.py check_url') |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ticket |
|
|
|
|
def ticket1384_p2(): |
|
|
|
|
with cd(REMOTE_HOME_DIR): |
|
|
|
|
run('python manage.py check_translation') |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ticket |
|
|
|
|
def t1443(): |
|
|
|
|
with cd(REMOTE_HOME_DIR): |
|
|
|
|
run('chown -Rv www-data:www-data locale') |
|
|
|
|
# def stage3_pre_final(): |
|
|
|
|
# with cd(REMOTE_HOME_DIR): |
|
|
|
|
# run('pip install pandas') |
|
|
|
|
# run('pip install django-rosetta==0.7.6') |
|
|
|
|
# run('git checkout master') |
|
|
|
|
# run('git pull') |
|
|
|
|
# call_state('stop') |
|
|
|
|
# put_configs() |
|
|
|
|
# run('python manage.py migrate conference 0001 --fake') |
|
|
|
|
# run('python manage.py migrate conference') |
|
|
|
|
# run('python manage.py migrate expobanner') |
|
|
|
|
# run('python manage.py migrate theme 0001 --fake') |
|
|
|
|
# run('python manage.py migrate theme 0002') |
|
|
|
|
# run('python manage.py migrate article 0001 --fake') |
|
|
|
|
# run('python manage.py migrate article 0002') |
|
|
|
|
# run('python manage.py migrate stats_collector') |
|
|
|
|
# run('python manage.py crontab remove') |
|
|
|
|
# run('python manage.py crontab add') |
|
|
|
|
# chown() |
|
|
|
|
# call_state('start') |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# def stage3_release(): |
|
|
|
|
# call_state('stop') |
|
|
|
|
# with cd(REMOTE_HOME_DIR): |
|
|
|
|
# # run('python manage.py themeblog_to_blog') |
|
|
|
|
# run('git fetch') |
|
|
|
|
# run('git checkout stage3_release') |
|
|
|
|
# run('git pull') |
|
|
|
|
# # run('python manage.py migrate settings 0002 --fake') |
|
|
|
|
# run('python manage.py migrate settings') |
|
|
|
|
# run('python manage.py migrate article 0003') |
|
|
|
|
# chown() |
|
|
|
|
# call_state('start') |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# def c_fix(): |
|
|
|
|
# with cd(REMOTE_HOME_DIR): |
|
|
|
|
# call_state('stop', only='apache2') |
|
|
|
|
# run('git pull') |
|
|
|
|
# run('python manage.py migrate expobanner') |
|
|
|
|
# call_state('start', only='apache2') |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# def stage4_firstrun(): |
|
|
|
|
# with cd(REMOTE_HOME_DIR): |
|
|
|
|
# call_state('stop') |
|
|
|
|
# run('git fetch') |
|
|
|
|
# run('git checkout stage4') |
|
|
|
|
# # run('git checkout -- proj/settings.py') |
|
|
|
|
# pull(with_configs=True) |
|
|
|
|
# run('python manage.py syncdb') |
|
|
|
|
# ticket1374() |
|
|
|
|
# ticket1393() |
|
|
|
|
# ticket1392() |
|
|
|
|
# ticket1384() |
|
|
|
|
# ticket1395() |
|
|
|
|
# ticket1384_p1() |
|
|
|
|
# ticket1384_p2() |
|
|
|
|
# t1443() |
|
|
|
|
# call_state('start') |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# @ticket |
|
|
|
|
# def ticket1395(): |
|
|
|
|
# with cd(REMOTE_HOME_DIR): |
|
|
|
|
# run('python manage.py accounts_check_url') |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# @ticket |
|
|
|
|
# def ticket1374(): |
|
|
|
|
# with cd(REMOTE_HOME_DIR): |
|
|
|
|
# run('python manage.py migrate theme') |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# @ticket |
|
|
|
|
# def ticket1393(): |
|
|
|
|
# with cd(REMOTE_HOME_DIR): |
|
|
|
|
# run('python manage.py migrate newsletter 0001 --fake') |
|
|
|
|
# run('python manage.py migrate newsletter') |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# @ticket |
|
|
|
|
# def ticket1392(): |
|
|
|
|
# with cd(REMOTE_HOME_DIR): |
|
|
|
|
# run('python manage.py migrate newsletter') |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# @ticket |
|
|
|
|
# def ticket1384(): |
|
|
|
|
# with cd(REMOTE_HOME_DIR): |
|
|
|
|
# run('python manage.py migrate exposition 0001 --fake') |
|
|
|
|
# run('python manage.py migrate exposition') |
|
|
|
|
# run('python manage.py migrate conference') |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# @ticket |
|
|
|
|
# def ticket1384_p1(): |
|
|
|
|
# with cd(REMOTE_HOME_DIR): |
|
|
|
|
# run('python manage.py check_url') |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# @ticket |
|
|
|
|
# def ticket1384_p2(): |
|
|
|
|
# with cd(REMOTE_HOME_DIR): |
|
|
|
|
# run('python manage.py check_translation') |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# @ticket |
|
|
|
|
# def t1443(): |
|
|
|
|
# with cd(REMOTE_HOME_DIR): |
|
|
|
|
# run('chown -Rv www-data:www-data locale') |
|
|
|
|
|