자바 웹 프로젝트 배포

작업 목록

배포 시나리오

배포 스크립트

import os.path
from fabric.api import env, local, run, execute
env.base_dir = "/Users/javajigi/python-workspace/fabric/projects"
environments = {
    "dev": {
        "source_dir": "%(base_dir)s/source" % {"base_dir":env.base_dir},
        "release_suffix_dir": "releases",
        "tomcat_base_suffix_dir": "tomcat_base",
    },
}
projects = {
    "slipp-web": {
        "hosts": ["localhost"],
        "web_port": 8080
    }    
}
 
def init(environment='dev', name='slipp-web'):
    print "Setting environment", environment
    env.update(environments[environment])
    env.update(projects[name])
    env.environment = environment
    env.project_name = name
    execute(create_project_dir)

def create_project_dir():
    env.project_base = '%s/%s' % (env.base_dir, env.project_name)
    print "project base", env.project_base
    if not os.path.exists(env.project_base):
        print "does not exists", env.project_base
        local("cp -R %s %s" % (env.source_dir, env.project_base)) 
 
def configure():
    origin_serverxml = '%s/%s/conf/server.xml' % (env.source_dir, env.tomcat_base_suffix_dir)
    target_serverxml = '%s/%s/conf/server.xml' % (env.project_base, env.tomcat_base_suffix_dir)
    with open(target_serverxml, "w") as fout:
        with open(origin_serverxml, "r") as fin:
            for line in fin:
                fout.write(line.replace('${PORT}', '%s' % (env.web_port)))
            fin.close
            fout.close