Files
zulip/tools/update-deployment
Tim Abbott 5f92ccb422 [manual] Move update-prod-static and update-deployments back to tools/.
update-deployment has been replaced by upgrade-zulip for local server
instances, since it won't be running off a git repository, and
update-prod-static won't be needed since we plan on shipping minified
javascript.

When we deploy this, the deployment will fail, and then we'll need to
update the git checkout from which post-receive runs on git.zulip.net.

(imported from commit 86aaedbab09c60ae86ac1d0ae492d0d1bc45569f)
2013-11-04 13:22:41 -05:00

64 lines
1.9 KiB
Python
Executable File

#!/usr/bin/python -u
import os
import sys
import subprocess
import logging
import datetime
import shutil
import time
sys.path.append(os.path.join(os.path.dirname(__file__), '..'))
from zulip_tools import DEPLOYMENTS_DIR, LOCK_DIR, TIMESTAMP_FORMAT, FAIL, WARNING, ENDC
logging.basicConfig(format="%(asctime)s update-deployment: %(message)s",
level=logging.INFO)
if len(sys.argv) != 2:
print FAIL + "Usage: update-deployment refname" + ENDC
sys.exit(1)
refname = sys.argv[1]
subprocess.check_call(["mkdir", '-p',
DEPLOYMENTS_DIR,
'/home/zulip/logs'])
start_time = time.time()
got_lock = False
while time.time() - start_time < 300:
try:
os.mkdir(LOCK_DIR)
got_lock = True
break
except OSError:
print WARNING + "Another deployment in progress; waiting for lock..." + ENDC
time.sleep(10)
if not got_lock:
print FAIL + "Deployment already in progress. Please run\n" \
+ " %s/current/tools/update-deployment %s\n" % (DEPLOYMENTS_DIR, refname) \
+ "manually when the current deployment finishes." + ENDC
sys.exit(1)
timestamp = datetime.datetime.now().strftime(TIMESTAMP_FORMAT)
deploy_path = os.path.join(DEPLOYMENTS_DIR, timestamp)
logging.info("Cloning the repository")
subprocess.check_call(["git", "clone", "-q", "-b", refname,
"git@git.zulip.net:eng/zulip.git",
deploy_path], stdout=open('/dev/null', 'w'))
os.chdir(deploy_path)
# Update static files
logging.info("Updating static files")
subprocess.check_call(["./tools/update-prod-static", "--prev-deploy",
os.path.join(DEPLOYMENTS_DIR, 'current')])
logging.info("Restarting server...")
subprocess.check_call(["./scripts/restart-server"])
logging.info("Deployment complete")
shutil.rmtree(LOCK_DIR)
subprocess.check_call(["./scripts/purge-old-deployments"])