Source code for fabric_colors.deploy.git

import subprocess

try:
    import fabsettings
except:
    print("Please set up your fabsettings.py")

from fabric.api import env, run, local, sudo, task
from fabric.contrib.project import rsync_project

from fabric_colors.environment import set_target_env
from fabric_colors.distro.server import get_ownership, usersudo


@task
@set_target_env
[docs]def git_branch_check(): """ Usage: `fab -R all deploy.git_branch_check`. Check that we are on master branch before permitting deploy """ cmd = 'git branch | grep "*" | sed "s/* //"' current_branch = str(subprocess.Popen(cmd, \ shell=True,\ stdin=subprocess.PIPE, \ stdout=subprocess.PIPE).communicate()[0]).rstrip() env.git_branch = current_branch if env.git_branch == "master": return True else: return False
@task @set_target_env
[docs]def git_archive_and_upload_tar(): """ Create an archive from the current git branch and upload it to target machine. """ cmd = 'git branch | grep "*" | sed "s/* //"' current_branch = str(subprocess.Popen(cmd, \ shell=True,\ stdin=subprocess.PIPE, \ stdout=subprocess.PIPE).communicate()[0]).rstrip() env.git_branch = current_branch local('git archive --format=tar %(git_branch)s > %(release)s.tar' % env) local('touch `git describe HEAD`-`git config --get user.email`.tag') local('tar rvf %(release)s.tar `git describe HEAD`-`git config --get user.email`.tag; \ rm `git describe HEAD`-`git config --get user.email`.tag' % env) local('gzip %(release)s.tar' % env) current_owner, current_group = get_ownership(env.path) deploying_user = fabsettings.PROJECT_SITES[env.target].get('USER', 'web') deploying_group = fabsettings.PROJECT_SITES[env.target].get('GROUP', deploying_user) if not current_owner or not current_owner: usersudo(deploying_user) # Add deploying user to the sudo group sudo('mkdir -p %(path)s/releases/%(release)s' % env) sudo('mkdir -p %(path)s/packages/' % env) if current_owner != deploying_user: print("Problem Houston. Our root path {0} for deployments is not owned by our deploying user {1}.".format(env.path, deploying_user)) print("Attempting to set the correct ownership permissions before proceeding.") usersudo(deploying_user) # Add deploying user to the sudo group sudo("sudo chown -R {0}:{1} {2}".format(deploying_user, deploying_group, env.path)) run('mkdir -p %(path)s/releases/%(release)s' % env) run('mkdir -p %(path)s/packages/' % env) rsync_project('%(path)s/packages/' % env, '%(release)s.tar.gz' % env, extra_opts='-avz --progress') run('cd %(path)s/releases/%(release)s && tar zxf ../../packages/%(release)s.tar.gz' % env) local('rm %(release)s.tar.gz' % env)

This Page