### jenkins自动构建部署项目到远程服务器
注意:对于远程服务跟本地服务的区别在于,需要把mvn打包好的文件直接传送到远程的服务器上,
并且重启tomcat即可。
-
首先需要安装Publish Over SSH–用于连接远程服务器
-
配置连接远程服务器的ssh(系统设置---->Publish over SSH–>SSH Servers 点击新增)
Passphrase 填写远程用户对应的密码 Name 自定义服务器名(centos7_2) Hostname 远程服务器的IP(192.168.44.131) Username 远程服务器的用户名(admin) Remote Directory 传输文件的目录(/usr/local/tomcat-web),注意到tomcat所在目录即可 点击Test Configuration,如果提示success,则成功配置
-
构建–>选择invoke top-level Maven targets—>填写版本和目标—>版本选择自己的命名的版本,目标:clean install
-
先测试以上步骤,是否能够正常构建以及生产war文件
-
构建后操作–>选择 send build artifacts over SSH
Name 全局配置的远程服务器的名字,如果有多个需要选择 Source files 项目构建后的目录(target/*.war) Remove prifix 去掉的 前缀(target/) Remote directory 发布的目录(webapps)跟上述Remote Directory对应即可,相对路径 Exec command 发布完执行的命令两个方式:
可以直接填入一下自定义脚本-
第一种方式自定义脚本如下:
#!/bin/bash BUILD_ID=DONTKILLME # 查看进行,搜索tomcat-web服务进程,排除grep的进程,输入查询到的数据第二列 tomcatwebpid=`ps -ef | grep tomcat-web | grep -v grep | awk '{print $2}'` if [ "$tomcatwebpid" == "" ] then echo "tomcatweb没有在运行..." else echo "tomcatweb项目的进程ID为:${tomcatwebpid}" # 开始遍历杀死相关进程 echo "开始杀进程..." for pid in $tomcatwebpid do kill -9 $pid done echo "tomcatwebpid进程已经被杀死..." fi # 启动相应的服务 echo "启动tomcat-web服务..." /usr/local/tomcat-web/bin/startup.sh tomcatwebpid=`ps -ef | grep tomcat-web | grep -v grep | awk '{print $2}'` # 判断是否启动成功 if [ "$tomcatwebpid" == "" ] then echo "tomcatweb启动失败!!!" else echo "tomcatweb启动成功,pid:${tomcatwebpid}" fi ```
-
运行上述脚本,日志输出:
Neither the JAVA_HOME nor the JRE_HOME environment variable is defined At least one of these environment variable is needed to run this program
但是远程服务器,明明就已经有JAVA_HOME,解决方法:
#在脚本加入 export JAVA_HOME=/usr/local/java/jdk11 export CLASSPATH=$:CLASSPATH:$JAVA_HOME/lib/ export PATH=$PATH:$JAVA_HOME/bin
所以脚本修改为:
#!/bin/bash export JAVA_HOME=/usr/local/java/jdk11 export CLASSPATH=$:CLASSPATH:$JAVA_HOME/lib/ export PATH=$PATH:$JAVA_HOME/bin BUILD_ID=DONTKILLME # 查看进行,搜索tomcat-web服务进程,排除grep的进程,输入查询到的数据第二列 tomcatwebpid=`ps -ef | grep tomcat-web | grep -v grep | awk '{print $2}'` if [ "$tomcatwebpid" == "" ] then echo "tomcatweb没有在运行..." else echo "tomcatweb项目的进程ID为:${tomcatwebpid}" # 开始遍历杀死相关进程 echo "开始杀进程..." for pid in $tomcatwebpid do kill -9 $pid done echo "tomcatwebpid进程已经被杀死..." fi # 启动相应的服务 echo "启动tomcat-web服务..." /usr/local/tomcat-web/bin/startup.sh tomcatwebpid=`ps -ef | grep tomcat-web | grep -v grep | awk '{print $2}'` # 判断是否启动成功 if [ "$tomcatwebpid" == "" ] then echo "tomcatweb启动失败!!!" else echo "tomcatweb启动成功,pid:${tomcatwebpid}" fi ```
-
第二种方式的脚本:
#!/bin/bash export JAVA_HOME=/usr/local/java/jdk11 export CLASSPATH=$:CLASSPATH:$JAVA_HOME/lib/ export PATH=$PATH:$JAVA_HOME/bin BUILD_ID=DONTKILLME /usr/local/tomcat-web/bin/startup.sh
-