Add fabfile.py
This commit is contained in:
parent
a74658ac49
commit
26fe6117c4
1 changed files with 61 additions and 0 deletions
61
fabfile.py
vendored
Normal file
61
fabfile.py
vendored
Normal file
|
@ -0,0 +1,61 @@
|
|||
import os
|
||||
import sys
|
||||
import json
|
||||
from fabric.api import run, env, cd
|
||||
|
||||
config = {
|
||||
'TARGET_PORT': 6589,
|
||||
'TARGET_USER': 'www-data',
|
||||
}
|
||||
|
||||
try:
|
||||
TARGET_CONF = json.loads(os.getenv('TARGET_CONF'))
|
||||
except (SyntaxError, ValueError) as e:
|
||||
print 'Could not parse configuration: %s' % e
|
||||
sys.exit(1)
|
||||
|
||||
BUILD_JOB_NAME = os.getenv('CI_BUILD_NAME')
|
||||
|
||||
if BUILD_JOB_NAME not in TARGET_CONF:
|
||||
print 'Could not find job configuration for %s' % BUILD_JOB_NAME
|
||||
sys.exit(1)
|
||||
else:
|
||||
config.update(TARGET_CONF[BUILD_JOB_NAME])
|
||||
|
||||
BRANCH = os.getenv('CI_BUILD_REF_NAME')
|
||||
|
||||
if not BRANCH:
|
||||
print 'Could not get branch name from configuration: Please specify CI_BUILD_REF_NAME env var'
|
||||
sys.exit(1)
|
||||
|
||||
for option in ['TARGET_HOST', 'TARGET_PATH']:
|
||||
if not config.get(option):
|
||||
print 'Could not get %s from configuration!' % option
|
||||
sys.exit(1)
|
||||
|
||||
env.hosts = [config.get('TARGET_HOST')]
|
||||
env.port = config.get('TARGET_PORT')
|
||||
env.user = config.get('TARGET_USER')
|
||||
|
||||
|
||||
def pre():
|
||||
if config.get('PRE_CMDS'):
|
||||
[run(cmd) for cmd in config.get('PRE_CMDS')]
|
||||
|
||||
|
||||
def git_pull():
|
||||
run('git fetch --all')
|
||||
run('git checkout --force %s' % BRANCH)
|
||||
run('git reset --hard origin/%s' % BRANCH)
|
||||
|
||||
|
||||
def post():
|
||||
if config.get('POST_CMDS'):
|
||||
[run(cmd) for cmd in config.get('POST_CMDS')]
|
||||
|
||||
|
||||
def deploy():
|
||||
with cd(config.get('TARGET_PATH')):
|
||||
pre()
|
||||
git_pull()
|
||||
post()
|
Loading…
Add table
Add a link
Reference in a new issue