from fabric.api import * import os from utils import set_env, upload_env, no_daemon, PROJECT_ROOT, next_version, git_branch PATH = os.path.abspath(os.path.join(PROJECT_ROOT, '..', 'opscode-corpsite')) @task def release(version=None): if env.oc_env == 'preprod': abort('Corpsite preprod lives on master') with lcd(PATH): # Check if there is new stuff local('git up') with settings(hide('running', 'stdout', 'warnings'), warn_only=True): diff = local('git diff release..master', capture=True) if diff.strip(): # Release and master are different, issue a release if not version: version = next_version(PATH) with lcd(PATH), git_branch('release'): local('git merge --no-ff master') local('git tag -a rel-%s -m "Release %s"'%(version, version)) local('git push') local('git push --tags') set_env('corpsite-www-revision', 'rel-%s'%version) upload_env() @roles('nanoc-builder') @task def upgrade(): sudo('chef-client') @task(default=True) def deploy(version=None): with no_daemon('nanoc-builder'): if env.oc_env == '...': execute(release, version) execute(upgrade)