本篇是《Linux Shell脚本之远程自动化部署java maven项目》的姊妹篇,但包含了bug、issue修正和添加了更多的支持特性,可以从GitHub上获取最新脚本内容:https://github.com/DingGuodong/AutomaticDeployJavaMavenProject 。
自动化部署java maven项目到多个主机的环境条件假设:
1.java maven项目至多有一个依赖项目
2.多个目标主机上的部署目录是相同的
支持特性:
1.在部署主机上将java maven项目以及依赖项目(当前脚本的编写只假设依赖项目只有一个)编译,将编译后的Class以及配置文件通过ssh上传到单个或多个目标主机的指定目录
2.单个目标主机部署模式支持手动版本回滚和自动回滚,多个目标主机部署模式支持手动回滚(手动回滚的意思就是需要人工选择需要回滚的版本)
3.支持在线更新配置文件,配置文件更新后运行脚本中的backup_manual函数,重新执行deploy[s]操作即可
4,允许用户定义是否跳过网络自检,这个特性在网络管理员禁用ICMP协议以及属于内网部署时有用
使用办法:
将脚本上传到Linux任意目录,修改以下变量:
1
2
3
4
5
6
7
8
|
user_defined_project_clone_depends=
"ssh://git@git.huntor.cn:18082/core/business-service-base.git"
# java maven项目的相关依赖源码文件所在的git地址,如果没有依赖则可省略
user_defined_project_clone=
"ssh://git@git.huntor.cn:18082/core/business-service-core.git"
# java maven项目的源码文件所在的git地址
user_defined_deploy_target_host_ip=
"10.6.28.135"
# 如果部署单个目标主机则在此处填写一个IP,无论是否部署多个目标主机,此项不能为空,多个目标主机的部署模式会用到这个主机上的配置文件
user_defined_deploy_targets_host_ip_list=
"10.6.28.135 10.6.28.28"
# 如果一次性部署多个目标主机,则填写多个IP,用空格隔开,第一个IP必须与上面的user_defined_deploy_target_host_ip相同
user_defined_project_top_directory_to_target_host=
"/tmp/deploy_test_target"
# 部署到目标主机上的哪一个目录
user_defined_docker_container_name=
"testcontainer"
# 需要重启的容器名称
user_defined_project_conf_directory=
"backup"
# 配置文件目录的绝对路径或者与此脚本相同目录位置的相对路径
user_defined_skip_check_network_and_resolver=
"true"
# 如果想跳过网络自检,则设置为true,否则设置为false。
|
运行脚本和使用方法:
在任意位置使用下方命令运行即可,脚本一旦运行一次,自动添加可执行权限,无须手动添加。
1
2
3
4
5
|
bash
/path/to/this</
|
本文转自 urey_pp 51CTO博客,原文链接:http://blog.51cto.com/dgd2010/1784390,如需转载请自行联系原作者