mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-04 05:53:43 +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"])
 |