jekins 和 expcet 脚本自动构建项目

jenkins是已经搭建好的,本次主要是后面脚本的事情

公司项目需要部署多台服务器避免每次打包上传,想弄个自动构建。

步骤如下:

1jenkins构建完之后会可以执行本机脚本

2安装expcet

3写脚本:

#!/usr/bin/expect -f
set password test
set ipOne 10.2.0.1
set userName test
spawn scp /root/.jenkins/workspace/test/product/test.war $userName@$ipOne:/home/work/test.war
set timeout 3
expect {
"yes/no" {send "yes\r";exp_continue}
}
expect "$userName@$ipOne's password:"
set timeout 3
send "$password\r"
set timeout 300
send "exit\r"
expect eof


#ssh
spawn ssh $userName@$ipOne /home/test/t.sh
expect "$userName@$ipOne's password:"
set timeout 3
send "$password\r"
set timeout 300
send "exit\r"
expect eof

这个脚本是在jenkins构建完之后执行的。

原理是用expcet将war上传到服务器,然后在执行服务器的shell脚本,这个shell主要解压重启tomcat就行。

碰到的问题

1第一次写shell脚本,不知道shell要求那么严格看了下面的博客才知道写好的

http://blog.chinaunix.net/uid-7589639-id-3018105.html

感谢他

执行[color=darkred]t.sh[/color] 重启tomcat的时候,碰到自动重启失败问题,发现原来是系统装了低版本的jdk,手动重启会指定java_home路径所以没问题。

tomcat关闭是通过catalina.shstop-force,有个功能是五秒未关闭kill掉不需要写shell去kill,具体可以查阅blog:https://my.oschina.net/abcfy2/blog/192203

新建一个$CATALINA_HOME/bin/setenv.sh文件并授权x即可,

#!/bin/bash
    CATALINA_PID=$CATALINA_HOME/bin/CATALINA_PID
    JAVA_OPTS="--server -Xmx1280m -XX:+UseConcMarkSweepGC"
    JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/

后记:

其实用jenkins的插件publishOverSSH可以解决上述问题

相关推荐