一键自动部署war包,jar包工具

github

用法

直接用批处理

  • 创建 config.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<?xml version="1.0" encoding="utf-8" ?>
<config>
<threadPoolSize default="5">3</threadPoolSize><!--线程池大小,如果上传服务器多的话可以调大,默认5个线程-->
<servers>
<server>
<host>192.168.0.1,192.168.0.3</host><!--远程服务器地址,多个用逗号隔开,要求其它配置必须一样-->
<userName>root</userName><!--ssh登录名称-->
<password>123456</password><!--ssh登录密码-->
<uploads>
<upload>
<local>C:\test.jar</local><!--本地要上传至服务器的文件或目录-->
<remote>/home</remote><!--服务器目录-->
</upload>
</uploads>
<commands>
<command>/home/restart.sh</command><!--上传完完文件后要处理的命令,可以多个-->
<command>/home/restart.sh2</command>
</commands>
<!--服务器应用启动后的验证接口,用于验证最新的代码是否更新成功,这个接口得自己定义,轮询验证直到成功-->
<verify requestCount="51" timeDelay="20000" timeGap="2000"><!--requestCount:接口访问次数,默认50,timeDelay:
服务器命令执行完后多长时间开始启动验证接口(单位毫秒,默认10000),timeGap: 轮询时间间隔(单位毫秒,默认1000) -->
<httpapi method="get" url="http://xxx/app/info"/><!--method: http 请求方法;url:http 接口 url-->
<httpapi method="post" url="http://xxx/test/testPost">
<param key="aaa">000</param><!--post 参数 键值-->
<param key="bbb">111</param>
</httpapi>
</verify>
</server>
<server>
<host>192.168.0.2</host>
<userName>root</userName>
<password>123456</password>
<uploads>
<upload>
<local>C:\test.jar</local>
<remote>/home</remote>
</upload>
<upload>
<local>C:\test2.jar</local>
<remote>/home</remote>
</upload>
</uploads>
<commands>
<command>/home/restart.sh</command>
<command>/home/restart2.sh</command>
</commands>
<verify requestCount="51" timeDelay="20000" timeGap="2000">
<httpapi method="get" url="http://xxx/app/info"/>
</verify>
</server>
</servers>
</config>
  • 一键调用命令
1
2
java -jar JavaAutoDeployClient-1.1.jar config.xml
  • 上传war包config的例子
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?xml version="1.0" encoding="utf-8" ?>
<!--use ssh user password-->
<config>
<threadPoolSize default="5">3</threadPoolSize>
<servers>
<server>
<host>192.168.0.1</host>
<userName>root</userName>
<password>123456</password>
<uploads>
<upload>
<local>C:\javawebdeploy.war</local>
<remote>/coder/tomcat/apache-tomcat-7.0.55/webapps</remote>
</upload>
</uploads>
<commands>
<command>sh /coder/tomcat/apache-tomcat-7.0.55/bin/shutdown.sh</command>
<command>rm -rf /coder/tomcat/apache-tomcat-7.0.55/webapps/javawebdeploy</command>
<command>sh /coder/tomcat/apache-tomcat-7.0.55/bin/startup.sh</command>
</commands>
<verify requestCount="51" timeDelay="20000" timeGap="2000">
<httpapi method="get" url="http://xxx/app/info"/>
</verify>
</server>
</servers>
</config>
  • 用maven打包的命令例子

autodeploy.bat

1
2
3
call maven-package.bat
pause
java -jar JavaAutoDeployClient-1.1.jar config.xml

maven-package.bat

1
mvn clean package -Pprod

用代码自定义 加入lib JavaAutoDeployClient-1.1.jar

  • 代码例子
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
public static void main(String args[]){
Map<String,String> uploadMap = new HashMap<String,String>();
uploadMap.put("c:\\test.jar","/home");
List<String> commands = new ArrayList<String>();
commands.add("/home/restart.sh");
List<HttpMethod> apis =new ArrayList<HttpMethod>();
HttpGet httpGet = new HttpGet();
httpGet.setUrl("http://xxxx/app/info");
apis.add(httpGet);
HttpPost httpPost = new HttpPost();
httpPost.setUrl("http://xxxx/app/info");
Map<String,String> params = new HashMap<String,String>();
params.put("key","value");
httpPost.setParams(params);
apis.add(httpPost);
AutoDeploy autoDeploy = AutoDeplyBuilder.create().
setServerInfo("192.168.0.1","root","123456").
setUploadFileInfo(uploadMap).
setCommands(commands).
setVerifyApi(apis).
build();
try {
autoDeploy.start(new AutoDeploy.AutoDeployListener() {
@Override
public void finish() {
}
@Override
public void verifySucess(List<String> log) {
}
});
} catch (Exception e) {
e.printStackTrace();
}
}