61 lines
No EOL
1.4 KiB
Python
61 lines
No EOL
1.4 KiB
Python
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() |