1,打包工具使用maven,打包成的war文件会位于项目的target目录
2,管理工具使用git,每次打包之前必须先检查项目是否处于master分支,用于提醒用户先合并master和拉取最新的master代码
3,可以打包和部署多个项目,使用参数化配置,
deploy_remote.py文件内容:
#!/usr/bin/env python # encoding:utf-8 from fabric.api import * import time import os import sys TOMCAT_HOME = "/xxx/xxx/apache-tomcat-x.x.x" servers = [ 'myserver1', 'myserver2' ] env.user= "server_username" env.password = "server_password" #部署服务器 def deploy(projectname,projectpath): #编译打包项目 print "开始编译项目",projectname compile_project(projectname,projectpath) #记录当前是第几个服务器 count = 0 #部署各个服务器 for server in servers: #累加次数 count = count + 1 #开始部署 print("正在部署服务器:" + server + " 项目名:" + projectname) with settings(host_string = server): deploy_one_server(projectname,projectpath) print("部署服务器 "+ server +" 项目" + projectname + " 完成!") if len(servers) != count : print "休息60秒" time.sleep(60) #编译打包项目 def compile_project(projectname,projectpath): with lcd(projectpath): #检查分支 check_branch(projectname) #打包 local("mvn clean && mvn install -Premote -Dmaven.test.skip=true") #检查项目是否在master分支 def check_branch(projectname): #查找master分支 p = os.popen("git branch | grep -e '\* master'"); found = False; while 1: line = p.readline() if(line.strip() == "* master") : found = True break if not line : break #检查是否是master分支 if found : print projectname,"项目当前是master分支,可以打包部署" else : print "***分支错误***",projectname,"项目当前不是master分支,不可以打包部署" sys.exit(0) #部署一个服务器 def deploy_one_server(projectname,projectpath): WAR_DIR = projectpath + "/target/" warfilename = projectname + ".war" #1,上传文件到tomcat根目录 print("1,上传文件到tomcat根目录") with lcd(WAR_DIR): with cd(TOMCAT_HOME): put(warfilename,warfilename) run("ls") #2,关闭服务器 print "2,关闭服务器" close_tomcat() #3,删除原有的部署文件 print "3,删除原有的部署文件" with cd(TOMCAT_HOME + "/webapps/"): run("rm -rf " + projectname + "/") run("mv " + warfilename + " ../" + warfilename + ".backup") #4,将已上传的文件放到tomcat项目目录 print "4,将已上传的文件放到tomcat项目目录" with cd(TOMCAT_HOME): run("mv " + warfilename + " ./webapps/") #5,启动服务器 print "5,启动服务器" run(TOMCAT_HOME +"/bin/startup.sh",pty=False) #关闭tomcat服务器 def close_tomcat(): #kill可能会因为没有tomcat线程,导致关闭命令失败,所以需要在产生异常时继续执行 with settings( hide('warnings', 'running', 'stdout', 'stderr'), warn_only=True ): run("ps -ef |grep tomcat |grep -v grep |awk -F \" \" '{print $2}' | xargs kill -9")
4,使用shell脚本预判断参数正确性,增加脚本的安全性
脚本内容:
#!/usr/local/bin/bash PYTHON_SCRIPT_PATH="deploy_remote.py" if [[ $# < 1 ]]; then echo "***缺少参数***第一个参数是需要部署的项目,且只接受一个参数,本脚本只能部署a和b项目,其他项目请检查和调整deploy_remote.py脚本" exit 0 fi if [ "$1" = "a" ]; then echo "将要编译部署a项目" projectpath="/Users/forest/gitwork/$1" elif [ "$1" = "b" ]; then echo "将要编译部署b项目" projectpath="/Users/forest/gitwork/$1" else echo "***参数错误***本脚本只能部署a和b项目,其他项目请检查和调整deploy_remote.py脚本" exit 0 fi echo "5秒钟内可以取消部署......" sleep 5 fab -f $PYTHON_SCRIPT_PATH deploy:projectname=$1,projectpath=$projectpath
调用方式:
./deploy_remote.sh a
传入参数a,开始打包部署a项目
相关推荐
基于python的windows窗口打包exe工具基于python的windows窗口打包exe工具基于python的windows窗口打包exe工具基于python的windows窗口打包exe工具基于python的windows窗口打包exe工具基于python的windows窗口打包exe...
Fabric是一款(django2 Fabric3 python3)开源的代码部署工具,它具有简单、高效、易用等特点,可以提高团队的工作效率.
源码,python编写的串口调试工具
基于Python的自动打包工具,让你从无限制的打包中解放出来
python3.6及Django打包exe文件详细教程,打包亲身体验,对各种坑的解决,实际环境编写。
python自动化打包java maven工程,并上传至服务器,简化服务器war上传步骤和节约时间
主要用来编写pyhton的脚本工具,python使用c或C++的编写工具编译容易导致语法错误,所以python脚本最好使用python的专用编辑器来编写
Python和Tkinter插件编写的串口工具。简单易学。
settings.ini配置文件: [group_weblogicgp] group = weblogicgp group_id = 1001 [user_weblogic] group = weblogicgp user = weblogic user_id = 1001 home_dir = /weblogic shell = /bin/bash ...
python编写shell脚本python编写shell脚本python编写shell脚本python编写shell脚本python编写shell脚本python编写shell脚本python编写shell脚本python编写shell脚本python编写shell脚本python编写shell脚本
Python3编写实用脚本程序——从零学Python-掘金活动.zip Python3编写实用脚本程序——从零学Python-掘金活动.zip Python3编写实用脚本程序——从零学Python-掘金活动.zip Python3编写实用脚本程序——从零学Python-...
Python3编写实用脚本程序——恶搞钓鱼网站.zip Python3编写实用脚本程序——恶搞钓鱼网站.zip Python3编写实用脚本程序——恶搞钓鱼网站.zip Python3编写实用脚本程序——恶搞钓鱼网站.zip Python3编写实用脚本程序...
Python自动化部署工具Fabric的简单上手指南
Python】基于fabric模块批量远程主机操作,很好的系统开发技术
课程:自己选择一个网站,用Python语言编写一个爬虫程序,将其网站中的文字、图像或视频等信息抓取到本地文件或文件夹中保存。 解压文件夹,双击运行 Main_Novel.py 程序 (默认电脑已安装Python环境),每一行代码...
Fabric是一个用Python开发的部署工具,最大特点是不用登录远程服务器,在本地运行远程命令,几行Python脚本就可以轻松部署。 文档入口 简单安装 sudo easy_install fabric 部署脚本 #!/usr/bin/env python # -*- ...
针对Python3以上版本打包,成功率高,更实用。
Python打包工具.exe
Python3编写实用脚本程序——12306抢票.zip Python3编写实用脚本程序——12306抢票.zipPython3编写实用脚本程序——12306抢票.zip Python3编写实用脚本程序——12306抢票.zipPython3编写实用脚本程序——12306抢票....
Python3编写实用脚本程序——省市区三级地址库.zip Python3编写实用脚本程序——省市区三级地址库.zip Python3编写实用脚本程序——省市区三级地址库.zip Python3编写实用脚本程序——省市区三级地址库.zip Python3...