jenkins-测试项目的配置-本地服务器的搭建
提醒:如果jenkins自动部署项目,则要关注所在位置,比如jenkins部署在tomcat,而项目也部署在tomcat,则会产生问题,比如需要关掉项目,则就要关掉tomca1,但是这意jenkins也无法使用咯。所以一般jenkins部署在一个tomcat,中,而项目部署在另一个服务器tomcat-web中,当部署项目时可以把tomcat-web服务关掉以及重启
1、配置maven,实现代码拉取打包
-
基于之前的测试脚本的配置,已经不需要配置过多,在之前的基础上进行配置
-
配置全局工具mvn工具
-
系统管理–>全局工具配置---->Maven---->点击新增---->输入name和命令存放的地址如:name:mvn36
MAVEN_HOME:/usr/local/maven
-
-
新增一个自由的项目
-
配置git的项目地址
-
构建–>选择invoke top-level Maven targets—>填写版本和目标—>版本选择自己的命名的版本,目标:clean install
-
测试构建是否正常,应该正常拉取代码,同时生成一个target,里面有war包
2、把war包部署在项目服务器上(jenkins跟项目服务器在同一个服务器中)
-
实现项目的部署,主要是使用构建,使用shell命令,把war拷贝到项目所在的tomcat-web/webapps中
-
查看进程并杀死进程的shell-测试通过
#!/bin/bash # 查看进行,搜索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
-
拷贝当前的文件到指定目录下-测试通过
#!/bin/bash # 移动目标文件到目标地 mv helloweb.war /usr/local/tomcat-web/webapps
-
启动相应的服务-测试通过
#!/bin/bash # 启动相应的服务 /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}"
-
完整的脚本
#!/bin/bash # 查看进行,搜索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服务器" mv ./target/helloweb.war /usr/local/tomcat-web/webapps # 启动相应的服务 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
-
-
构建–>添加exceute shell,添加上面的脚本
可以看到日志提示成功,目标文件也已经复制过去,但是服务没启动,
原因:
Jenkins默认会在Build结束后Kill掉所有的衍生进程。
解决方法:在execute shell输入框中加入BUILD_ID=DONTKILLME,即可防止jenkins杀死启动的java进程
#!/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服务器" mv ./target/helloweb.war /usr/local/tomcat-web/webapps # 启动相应的服务 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
-
因为tomcat的原因,直接拷贝过去,可直接启动tomcat就好,也可以使用下面得简单脚本:
#!/bin/bash BUILD_ID=DONTKILLME # 移动目标文件到目标地 echo "移动文件到tomcat-web服务器" mv ./target/helloweb.war /usr/local/tomcat-web/webapps # 启动相应的服务 /usr/local/tomcat-web/bin/startup.sh