From fc5243afb12b6e3f295649201449767b51371361 Mon Sep 17 00:00:00 2001 From: Dmitriy Shesterkin Date: Sun, 6 Aug 2017 12:54:32 +0300 Subject: [PATCH] fab settings --- Makefile | 18 ++++++--- fabfile.py | 117 +++++++++++++++++------------------------------------ 2 files changed, 51 insertions(+), 84 deletions(-) diff --git a/Makefile b/Makefile index 3f07e36..27861e1 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -.PHONY: all help build virtualenv requirements-local loaddata run migrate shell collectstatic clean worker qa flush update-develop upgrade-develop docker-bash +.PHONY: all help build virtualenv requirements-local loaddata run migrate shell collectstatic clean worker qa flush update-develop upgrade-develop update-develop upgrade-develop # target: all - Default target. Does nothing. all: @@ -86,12 +86,20 @@ flush: # target: update-develop - Run push change in repo develop branch and deploy for develop server with restart only web container update-develop: git push origin develop - fab update + fab update_develop # target: upgrade-develop - Run push change in repo develop branch and deploy for develop server with rebuild container upgrade-develop: git push origin develop - fab upgrade + fab develop upgrade -docker-bash: - fab docker_bash + +# target: update-prod - Run push change in repo master branch and deploy for prod server with restart only web container +update-prod: + git push origin master + fab prod update + +# target: upgrade-prod - Run push change in repo master branch and deploy for prod server with rebuild container +upgrade-prod: + git push origin master + fab prod upgrade diff --git a/fabfile.py b/fabfile.py index 48f92fc..f17603b 100644 --- a/fabfile.py +++ b/fabfile.py @@ -6,103 +6,62 @@ from conf.deploy.common import BRANCH_DEVELOP, BRANCH_PROD, PROJECT_NAME, PROJEC from conf.deploy.prod import HOSTS, USER, PASS from conf.deploy.develop import HOSTS as HOSTS_DEVELOP, USER as USER_DEVELOP, PASS as PASS_DEVELOP -PROJECT_DIR = f'opt/app/{PROJECT_NAME}' -PROJECT_DIR_DEVELOP = f'projects/{PROJECT_NAME_DEVELOP}' - -env.user = USER -env.password = PASS -env.hosts = HOSTS - - -@task -def pull_prod(): - with cd(PROJECT_DIR): - run(f'git pull origin {BRANCH_PROD}') - - -@task -def docker_rebuild_prod(): - with cd(PROJECT_DIR): - run('docker-compose build') - run('docker-compose down') - run('docker-compose up -d') - - -@task -def docker_restart_prod(): - with cd(PROJECT_DIR): - run('docker-compose restart web') - @task -def upgrade_prod(): - pull_prod() - docker_rebuild_prod() - - -@task -def update_prod(): - pull_prod() - docker_restart_prod() - - -@task -def pull_develop(): +def develop(): + env.status = 'develop' env.user = USER_DEVELOP env.password = PASS_DEVELOP env.hosts = HOSTS_DEVELOP - - with cd(PROJECT_DIR): - run(f'git pull origin {BRANCH_DEVELOP}') + env.PROJECT_DIR = f'projects/{PROJECT_NAME_DEVELOP}' + env.BRANCH = BRANCH_DEVELOP @task -def docker_rebuild_develop(): - env.user = USER_DEVELOP - env.password = PASS_DEVELOP - env.hosts = HOSTS_DEVELOP - - with cd(PROJECT_DIR_DEVELOP): - run('docker-compose -f docker-compose.develop.conf build') - run('docker-compose -f docker-compose.develop.conf down') - run('docker-compose -f docker-compose.develop.conf up -d') +def prod(): + env.status = 'prod' + env.user = USER + env.password = PASS + env.hosts = HOSTS + env.PROJECT_DIR = f'opt/app/{PROJECT_NAME}' + env.BRANCH = BRANCH_PROD @task -def docker_restart_develop(): - env.user = USER_DEVELOP - env.password = PASS_DEVELOP - env.hosts = HOSTS_DEVELOP - - with cd(PROJECT_DIR_DEVELOP): - run('docker-compose -f docker-compose.develop.conf restart web') +def pull(): + with cd(env.PROJECT_DIR): + run(f'git pull origin {env.BRANCH}') @task -def docker_bash_develop(): - env.user = USER_DEVELOP - env.password = PASS_DEVELOP - env.hosts = HOSTS_DEVELOP - - with cd(PROJECT_DIR_DEVELOP): - run('docker-compose -f docker-compose.develop.conf exec web bash') +def docker_rebuild(): + with cd(env.PROJECT_DIR): + if env.status == 'prod': + run('docker-compose build') + run('docker-compose down') + run('docker-compose up -d') + else: + run('docker-compose -f docker-compose.develop.yml build') + run('docker-compose -f docker-compose.develop.yml down') + run('docker-compose -f docker-compose.develop.yml up -d') @task -def upgrade_develop(): - env.user = USER_DEVELOP - env.password = PASS_DEVELOP - env.hosts = HOSTS_DEVELOP - - pull_develop() - docker_rebuild_develop() +def docker_restart(): + with cd(env.PROJECT_DIR): + if env.status == 'prod': + run('docker-compose restart web') + else: + run('docker-compose -f docker-compose.develop.yml restart web') @task -def update_prod(): - env.user = USER - env.password = PASS - env.hosts = HOSTS_DEVELOP +def upgrade(): + pull() + docker_rebuild() - pull_develop() - docker_restart_develop() + +@task +def update(): + pull() + docker_restart()