Created
February 15, 2012 19:55
-
-
Save Nagyman/1838539 to your computer and use it in GitHub Desktop.
Skeleton for point-release from git
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def deploy(): | |
env.release = time.strftime('%Y%m%d%H%M%S') | |
upload_tar_from_git() | |
symlink_current_release() | |
restart_webserver() | |
def deploy_version(version): | |
"Specify a specific version to be made live" | |
require('hosts', provided_by=[localhost,webserver]) | |
require('releases') | |
env.version = version | |
current_to_previous() | |
run('ln -s %(releases)s/%(version)s %(current)s' % env, pty=True) | |
restart_webserver() | |
def current_to_previous(): | |
if files.exists(env.previous): | |
run('rm %(previous)s' % env, pty=True) | |
if files.exists(env.current): | |
run('mv %(current)s %(previous)s' % env, pty=True) | |
def rollback(): | |
""" | |
Limited rollback capability. Simple loads the previously current | |
version of the code. Rolling back again will swap between the two. | |
""" | |
require('hosts', provided_by=[localhost,webserver]) | |
require('releases', provided_by=[default]) | |
run('mv %(current)s %(releases)s/_previous;' % env, pty=True) | |
run('mv %(previous)s %(current)s;' % env, pty=True) | |
run('mv %(releases)s/_previous %(previous)s;' % env, pty=True) | |
restart_webserver() | |
def upload_tar_from_git(): | |
"Create an archive from the current Git master branch and upload it" | |
require('packages', provided_by=[default]) | |
require('releases', provided_by=[default]) | |
require('release', provided_by=[deploy]) | |
local('git archive --format=tar master | gzip > %(release)s.tar.gz' % env) | |
run('mkdir -p %(releases)s/%(release)s' % env, pty=True) | |
put('%(release)s.tar.gz' % env, '%(packages)s/' % env) | |
run('cd %(releases)s/%(release)s && tar zxf %(packages)s/%(release)s.tar.gz' % env, pty=True) | |
local('rm %(release)s.tar.gz' % env) | |
def symlink_current_release(): | |
"Symlink our current release" | |
require('release', provided_by=[deploy]) | |
require('releases', provided_by=[default]) | |
current_to_previous() | |
run('ln -s %(releases)s/%(release)s %(current)s' % env) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment