#!/usr/bin/python
# -*- coding: utf-8 -*-
from fabric.api import *
from fabric.colors import *
import time
# env.use_ssh_config = True
env.roledefs = {'root': ['root@xx.xx.xx.xx']}
env.password='123456'
# project name
project_name = "project-name";
# local source home
source_home = "/home/root/workspace/project-name"
# target home
target_home = "/home/root/project-name"
# profile
maven_profile = "500"
@task
def pull_source_code():
"""
update (eg: project_name) code
"""
with lcd(source_home):
local("git fetch")
local("git checkout git-500")
local("git pull")
print "update tigress code finished!"
@task
def package_service():
"""
maven package
"""
with lcd(source_home):
local("mvn clean package deploy -am -U -pl cod-web -Dmaven.test.skip -P{maven_profile}".format(maven_profile=maven_profile))
print "mvn package finished!"
@roles('root')
@task
def stop_service():
"""
stop service
"""
with settings(warn_only=True):
with cd("{target_home}".format(target_home=target_home)):
run("{project_name}/bin/{project_name} stop".format(project_name=project_name))
print "stop service finished!"
@roles('root')
@task
def prepare_service():
"""
build (eg: project_name) user(eg: user) and upload to server
"""
backup_service()
upload_service()
@roles('root')
@task
def backup_service():
"""
backup service
"""
with settings(warn_only=True):
run("[ -e {target_home} ] || mkdir -p {target_home}".format(target_home=target_home))
with cd("{target_home}".format(target_home=target_home)):
"""run("[ -e {project_name}.tar.gz.bak ] && rm {project_name}.tar.gz.bak".format(project_name=project_name))"""
run("[ -e {project_name}.tar.gz ] && mv {project_name}.tar.gz {project_name_v}.tar.gz".format(project_name=project_name,project_name_v=project_name+"-"+time.strftime('%Y%m%d%H%M%S')))
print "backup service finished!"
@roles('root')
@task
def upload_service():
"""
upload to server
"""
with lcd("{source_home}".format(source_home=source_home)):
with lcd("web/target/jsw"):
local("tar zcf {project_name}.tar.gz {project_name}".format(project_name=project_name))
put("{project_name}.tar.gz".format(project_name=project_name),"{target_home}".format(target_home=target_home))
@roles('root')
@task
def reload_service():
"""
reload service (eg: project_name) and start
"""
with settings(warn_only=True):
with cd("{target_home}".format(target_home=target_home)):
run("{project_name}/bin/{project_name} stop".format(project_name=project_name))
run("[ -e {project_name} ] && rm -rf {project_name}".format(project_name=project_name))
run("tar zxf {project_name}.tar.gz".format(project_name=project_name))
run("chmod u+x {project_name}/bin/*".format(project_name=project_name))
run("{project_name}/bin/{project_name} start".format(project_name=project_name))
print "reload service finished!"
@task(default=True)
def deploy():
pull_source_code()
print "beging to deploy service"
package_service()
execute(stop_service)
execute(prepare_service)
execute(reload_service)
自动发版脚本
最新推荐文章于 2023-09-28 13:48:11 发布