def starting(): """ Start a deployment, make sure server(s) ready. """ if "local" in env.roles: utils.abort("Cannot run deploy in local role") abort_msg = None utils.puts("Check server packages...") with settings(abort_exception=FabricException): try: run('which python3 > /dev/null 2>&1') except (FabricException): abort_msg = "Python 3 must be installed" try: run('which virtualenv > /dev/null 2>&1') except (FabricException): abort_msg = "virtualenv for python must be installed" if abort_msg: utils.abort(abort_msg) execute('check', host=env.host) execute('set_previous_revision', host=env.host)
def run(self, *args, **kwargs): for func in self.prereqs: execute(func, host=env.host) # set role specific variables from roledefs with settings(**self.role_settings()): result = super(WrappedCallableDependenciesTask, self).run(*args, **kwargs) for func in self.postreqs: execute(func, host=env.host) return result
def install_ssh_kit(): """ Install the whole ssh kit (key + git config) """ tasks = ('install_git_ssh', 'install_ssh_key') for task in tasks: execute(task, host=env.host)
def rollback(): """ Rollback to previous release. """ tasks = ( 'starting started reverting reverted ' 'publishing published finishing_rollback finished' ) for task in tasks.split(): execute(task, host=env.host)
def run(self, *args, **kwargs): for func in self.prereqs: execute(func, host=env.host) # set role specific variables from roledefs with settings(**self.role_settings()): result = super(WrappedCallableDependenciesTask, self).run(*args, **kwargs) for func in self.postreqs: execute(func, host=env.host) return result
def deploy(): """ Deploy a new release. """ tasks = ( 'starting started updating updated ' 'publishing published finishing finished' ) for task in tasks.split(): execute(task, host=env.host)
def check(): """ Check required files and directories exist """ if 'deploy_path' not in env or 'repo_url' not in env: raise RuntimeError("You must set deploy_path and repo_url in your environment") _set_scm() execute(scm.check, host=env.host) run("mkdir -p %s %s" % (paths.shared_path, paths.releases_path)) if len(env.linked_dirs) > 0: dirs = map(str, paths.shared_path.rooted(env.linked_dirs)) run("mkdir -p %s" % " ".join(dirs)) if len(env.linked_files) > 0: dirs = [paths.shared_path.join(f).dirname for f in env.linked_files] run("mkdir -p %s" % " ".join(dirs))
def check(): """ Check required files and directories exist """ if 'deploy_path' not in env or 'repo_url' not in env: raise RuntimeError( "You must set deploy_path and repo_url in your environment") _set_scm() execute(scm.check, host=env.host) run("mkdir -p %s %s" % (paths.shared_path, paths.releases_path)) if len(env.linked_dirs) > 0: dirs = map(str, paths.shared_path.rooted(env.linked_dirs)) run("mkdir -p %s" % " ".join(dirs)) if len(env.linked_files) > 0: dirs = [paths.shared_path.join(f).dirname for f in env.linked_files] run("mkdir -p %s" % " ".join(dirs))
def updating(): """ Update server(s) by setting up a new release. """ # this may have been set on a previous run on another server. # it's used later, so don't update if it's already been set. if 'release_timestamp' not in env: env.release_timestamp = time.strftime('%Y%m%d%H%M%S', time.gmtime()) paths.release_path = paths.releases_path.join(env.release_timestamp) _set_scm() execute(scm.create_release, host=env.host) execute(scm.set_current_revision, host=env.host) with cd(paths.release_path): run("echo \"%s\" >> REVISION" % env.current_revision) execute("symlink_folders", host=env.host) execute("symlink_files", host=env.host)
def updating(): """ Update server(s) by setting up a new release. """ # this may have been set on a previous run on another server. # it's used later, so don't update if it's already been set. if 'release_timestamp' not in env: env.release_timestamp = time.strftime('%Y%m%d%H%M%S', time.gmtime()) paths.release_path = paths.releases_path.join(env.release_timestamp) _set_scm() execute(scm.create_release, host=env.host) execute(scm.set_current_revision, host=env.host) with cd(paths.release_path): run("echo \"%s\" >> REVISION" % env.current_revision) execute("symlink_folders", host=env.host) execute("symlink_files", host=env.host)
def published(): """ Published """ execute('log_dir_permissions', host=env.host) execute('deploy_virtualenv', host=env.host) execute('install_dotenv', host=env.host) execute('deploy_staticfiles', host=env.host) execute('migrate_database', host=env.host) execute('create_run_dir', host=env.host)
def starting(): """ Start a deployment, make sure server(s) ready. """ execute('check', host=env.host) execute('set_previous_revision', host=env.host)
def finishing_rollback(): execute("cleanup_rollback", host=env.host)
def finishing(): execute("cleanup", host=env.host)
def finished(): """ Published """ execute('restart', host=env.host)
def finishing(): execute("cleanup", host=env.host)
def finishing_rollback(): execute("cleanup_rollback", host=env.host)
def starting(): """ Start a deployment, make sure server(s) ready. """ execute('check', host=env.host) execute('set_previous_revision', host=env.host)