栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

自动发版脚本

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

自动发版脚本

#!/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)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/914088.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号