mirror of
https://github.com/zulip/zulip.git
synced 2025-11-05 22:43:42 +00:00
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)
64 lines
1.9 KiB
Python
Executable File
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"])
|