fabric自动发布tomcat线上项目

现在公司的每个tomcat项目都有测试和生产两个环境,对于经常需要上线的tomcat项目,如用手工更新就非常耗费时间和人力。现用fabric开发了一个自动发布tomcat项目的脚本,该脚本已经在公司使用的非常稳定。

fabric自动发布脚本流程如下:

fabric自动发布脚本如下:

#!/usr/bin/python
#coding=utf-8
from fabric.api import *
from fabric.colors import *
from fabric.context_managers import *
from fabric.contrib.console import confirm
env.user=‘root‘
env.hosts=[‘192.168.1.10‘]
env.password=‘123456789‘
env.svn_user=‘userabd‘
env.svn_password=‘123456‘
env.svn_url=‘svn://192.168.1.20/source/java/project‘
env.svn_local_path=‘/data/svn/‘
env.remote_path=‘/data/company/project/‘
@task
def package_project():
    print yellow(‘开始打包文件‘)
    with lcd(env.svn_local_path):
        local("svn co %s --username=%s --password=%s" %(env.svn_url,env.svn_user,env.svn_password))
        with lcd("%s‘project‘" %(env.svn_local_path)):
            local("mvn clean package -Dmaven.test.skip=true -Ptest -U")
            with lcd("%s‘project/target‘" %(env.svn_local_path)):
                 result=local(‘ls |grep project.*war$‘,capture=True)
                 print yellow(‘打包文件成功‘)
                 print yellow(‘打包文件为:%s‘ %(result))
@task
def put_package():
    print yellow(‘开始上传文件‘)
    with lcd("%s‘project/target‘" %(env.svn_local_path)):
        result=local(‘ls |grep project.*war$‘,capture=True)
    env.local_war_path=env.svn_local_path + ‘project/target/‘ + result
    with cd("env.remote_path"):
        put(env.local_war_path,env.remote_path)
        
@task
def check_task():
    with lcd("%s‘project/target‘" %(env.svn_local_path)):
        result=local(‘ls |grep project.*war$‘,capture=True)
        env.local_war_path=env.svn_local_path + ‘project/target/‘ + result
        env.remote_war_path=env.remote_path + result
        lmd5=local("md5sum %s" %(env.local_war_path),capture=True ).split(‘ ‘)[0]
        rmd5=run("md5sum %s" %(env.remote_war_path)).split(‘ ‘)[0]
        if lmd5 == rmd5:
            print green(‘上传文件成功‘)
        else:
            print red(‘上传文件失败‘)
            
@task
def unpack_project():
    print yellow(‘开始解压war包‘)
    with lcd("%s‘project/target‘" %(env.svn_local_path)):
        result=local(‘ls |grep project.*war$‘,capture=True)
        with cd(env.remote_path):
            run("find . ! -name ‘*war‘ -a ! -name .|xargs rm -rf")
            run("unzip %s" %(result))
            

@task
def switch_production():
    print yellow(‘开始切换生产环境配置文件‘)
    with cd(env.remote_path):
        run(‘sed -i s/test/production/g WEB-INF/classes/applicationContext.xml‘)

@task
def restart_tomcat():
    print yellow(‘重启Tomcat进程‘)
    run(‘/usr/local/tomcat/bin/shutdown.sh‘)
    run(‘sleep 10‘)
    run(‘/usr/local/tomcat/bin/startup.sh‘)

@task
def production():
    package_project()
    put_package()
    check_task()
    unpack_project()
    switch_production()
    restart_tomcat()

脚本使用方法:fab -f name.py production

时间: 2024-10-11 02:18:24

fabric自动发布tomcat线上项目的相关文章

Shell脚本,自动化发布tomcat项目【转】

Shell脚本,自动化发布tomcat项目脚本. 1. vko2c_auto_build_by_scp.sh 文件内容: #---------------------start---------------------# #封装shutdown函数,关闭tomcat服务 #封装kill函数,强制关闭tomcat的进程 # 调用关闭函数与项目备份 # 使用expect , 采用scp 免输入密码,远程copy ROOT.war 包 # tomcat启动与现实启动日志 #--------------

Azure 基础:用 PowerShell 自动发布 CloudServices

在软件的开发过程中,自动化的编译和部署能够带来很多的优势.下面我们聊聊如何自动发布云应用程序到 azure 上的 cloud services. 打包要发布的内容 首先使用 msbuild 编译 *.ccproj 文件,我们需要使用生成产物中的:app.publish\xxx.cspkgapp.publish\yyy.cscfg 下载 publishsettings 文件 使用你的 Azure 账号登录下面的地址,就可以下载 publishsettings 文件(国际版):https://man

node js 修改js代码自动发布到服务器

重新修改js代码后,不需要手动重启服务.需要安装supervisor 工具替代手工. 在联网的前提下在cmd中输入npm install supervisor -g 命令行会自动安装supervisor 工具 然后启动服务时就不用node  XXX.js  使用supervisor XXX.js后 修改js后不再需要手动重启node服务,supervisor 会自动发布最新修改的代码.

raspberry pi 自动发布天气信息到QQ空间/微博

raspberry pi 自动发布天气信息到QQ空间/微博 参考链接: https://aoaoao.me/951.html/comment-page-1 http://www.ipip5.com/today/api.php?type=json 说明: 天气信息来自于百度地图API,历史上的今天来自于网络API(见上). 准备工作: 安装python(没有的,自行下载安装) 安装requests: git clone git://github.com/kennethreitz/requests.

使用VisualSVN Server自动发布站点

使用VisualSVN Server自动发布站点可以节省大量的发布时间. 适用于项目测试版本 通常一个项目在测试阶段会遇到以下问题 1.开发人员修改缺陷要实时反应到测试环境 2.项目经理想让客户及时看到缺陷修改的结果 3.不要求测试环境程序稳定,但要求更新及时 4.部署人员想偷懒 5.位于不同地点.但各自都可以发布版本的小团队 下面看看步骤 1.在SVN服务器上第一次checkout版本 "D:/Program Files/VisualSVN Server/bin/svn.exe" c

测试开发Python培训:自动发布新浪微博-技术篇

测试开发Python培训:自动发布新浪微博-技术篇 在前面我们教大家如何登陆,大家需要先看自动登陆新浪微博(http://www.cnblogs.com/laoli0201/articles/4880969.html),再看这篇文章会好很多: 在上一篇python的自动化脚本中,把脚本中的发送请求数据修改就好,上一篇脚本代码替换掉: formData={ ‘location':'v6_content_home', 'appkey':'', ‘style_type':'1', ‘pic_id':'

设置SVN hooks实现自动发布

# CentOS下安装SVN yum -y install subversion svnserve --version cd /home/ mkdir svn cd svn/ /usr/bin/svnserve -d -r /home/svn/ # 启动SVN服务 svnadmin create /home/svn/test/ # 创建版本仓库 vi /etc/rc.local # 新增以下内容 /usr/bin/svnserve -d -r /home/svn/ # 先设置 passwd ,并

linux下实现自动部署tomcat的脚本

linux下实现自动部署tomcat的脚本 由于经常部署war到tomccat上,经常有一些重复的工作要做:停服务.备份war包.上传新的war包.启动服务.索性就写了一个自动部署的脚本. 脚本如下autoDeploy.sh: 1 #! /bin/sh 2 echo '####################开始自动部署####################' 3 path=`pwd` #当前路径 4 tomcatPath=tomcat-7 #指定tomcat文件目录名称 5 cd ../$t

[Eclipse] - 集成JBoss7热加载和自动发布

使用Eclipse + JBoss开发时,总是要重启项目或JBoss,烦人.下面方法可以很简单的实现Eclipse + JBoss热加载和自动发布. 我的环境是JBoss 7.1.1 Final 1) 下载这个:jboss-as-web-7.1.1.Final-RECOMPILE.jar http://files.cnblogs.com/HD/jboss-as-web-7.1.1.Final-RECOMPILE.jar.zip 2) 把这个jar包放到这个目录下:jboss-as-7.1.1.F