Red Hat 4.8(Linux-3.10 x64)搭建jenkins自动化部署

心已入冬 提交于 2019-12-22 17:08:23

Red Hat 4.8(Linux-3.10 x64)搭建jenkins自动化部署 发布普通war包

1.下载、配置jenkins

官网地址(https://jenkins.io/zh/),选择适合自己的版本。
在这里插入图片描述
选择合适的版本,为了方便我选择war包的方式,然后发布到tomcat下,启动tomcat,关注下启动日志,记录jenkins管理员的默认密码,也可以在jenkins生成的密码文件中找到。

2.配置Jenkins

输入上一步的管理员密码,进入配置jenkins界面。
在这里插入图片描述
下载需要的插件,推荐的都下载:git、svn、maven、Ant、Pipeline、gradle、SSH等相关的插件。
在这里插入图片描述
配置jdk,git,maven等相关地址。

3.创建项目

进入主界面,点击新建任务
在这里插入图片描述
输入项目名称,选择自由风格的软件项目,点击确定。我这里是一个普通的web项目。
如果是maven项目,选择构建maven项目
点击确定。进入配置界面
在这里插入图片描述
输入仓库地址:
在这里插入图片描述
如果地址有权限限制,则会报如上错误。
在这里插入图片描述
上面配置下项目构建环境。
下面配置已经编写好的构建脚本,以及启动命令,点击保存。
在这里插入图片描述
脚本文件jenkins-test-driver.sh:

#!/bin/bash
DATE=`date +%F-%H-%M`
export BUILD_ID=dontKillMe
#打包项目
#echo '开始执行构建脚本buildDriver.sh'
sh /root/.jenkins/workspace/war/buildDriver.sh
#echo '构建脚本执行成功'
#备份
#删除旧项目
if [ -x '/usr/local/webapps/driver/ROOT' ]; then
mv /usr/local/webapps/driver/ROOT.war /usr/local/bak/driver-$DATE.war
echo '备份到bak目录成功'
rm -rf /usr/local/webapps/driver/ROOT
echo '老版本删除成功'
fi
#将新的war包放入tomcat中
mv /root/.jenkins/workspace/war/driver.war /usr/local/webapps/driver/ROOT.war
echo '新版本放入成功'
#启动tomcat服务
echo '重启服务'
#/bin/bash /usr/local/script/restart_tomcat_test.sh restart 8082
function start(){
 echo '调用启动tomcat方法'
 eval "/bin/bash /usr/local/$tomcatServer/bin/startup.sh $port";
}
function stop(){
 echo '调用停止tomcat方法'
 eval "/usr/local/$tomcatServer/bin/shutdown.sh"
 sleepCount=0;
 for java in `ps -ef|grep $tomcatServer|grep java`;do
   if [[ $java != "" && $sleepCount < 5 ]]; then
      sleep 1;
     sleepCount=$sleepCount+1;
   fi;
 done;

 if [[ `ps -ef|grep $tomcatServer|grep java` ]]; then
    ps -ef|grep $tomcatServer|grep java|awk '{print $2}'|xargs kill -9 >/dev/null;
 fi;
 echo '停止tomcat方法结束'
}
function restart
{
 stop;
 start;
}

for i in "$@"
do
  count=`expr $count + 1`;
  if [ $count -gt 1 ];then
  echo $1;
  port=$i
  tomcatServer=$(ls /usr/local/|grep -P 'tomcat8082'|grep $port)
  echo $tomcatServer
  case "$1" in
     start)
     start;
  ;;
     stop)
     stop;
  ;;
     restart)
     restart;
  ;;
  esac
 fi;
done;
echo '服务重启成功'
#移除文件
rm -rf /root/.jenkins/workspace/war/ROOT.war
echo '打包文件删除成功'

构建war包的脚本文件 buildDriver.sh:

#!/bin/bash
#进入到脚本所在目录
cd /root/.jenkins/workspace/war
if [ -x '../driver' ]; then
cd ../driver
if [ -x 'WEB-INF' ]; then
rm -rf WEB-INF
echo '删除旧文件夹WEB-INF'
fi
mkdir WEB-INF
echo 'WEB-INF文件夹创建完成'
cd WEB-INF
mkdir classes
echo 'classes文件夹创建完成'
cd ../
echo '开始将java文件编译成class文件1'
find src -name *.java >javaFiles.txt
echo '开始将java文件编译成class文件2'
javac -d WEB-INF/classes -cp .:./web/WEB-INF/lib/*:/usr/local/tomcat8082/lib/servlet-api.jar:/usr/local/tomcat8082/lib/jsp-api.jar @javaFiles.txt
echo '开始将java文件编译成class文件3'
#cp -r src/* WEB-INF/classes
#rm -rf build/WEB-INF/classes/*.java
echo '开始将java文件编译成class文件4'
find WEB-INF/classes -name *.java -exec rm -rf {} \;
echo '编译完成,复制web/WEB-INF下文件到WEB-INF下'
#cp -r WEB-INF/classes/common/* WEB-INF/classes
#rm -rf WEB-INF/classes/common/*
cp -r web/WEB-INF/* WEB-INF
echo '复制完成,开始打包'
if [ -x "../war/driver.war" ]; then
rm -rf ../war/driver.war
fi
jar cvf ../war/driver.war -c WEB-INF
echo '打包完成'
rm -rf ../war/WEB-INF
rm -rf javaFiles.txt
fi

配置完成后,开始构建项目:
在这里插入图片描述
然后就会发现各种报错,就是构建不成功。

4、问题解决

然后后面统计一些报错以及解决办法。

1.配置项目时输入仓库地址后,各种红色错误。

在这里插入图片描述
解决办法
上面是因为没有权限连接仓库地址,
1、仓库服务器配置jenkins所在服务器的git秘钥。(我的解决办法)
2、配置上仓库地址的帐号密码。

2、执行shell脚本时提示 No such file or directory

我敢保证文件夹是存在的,单独执行linux命令能正常执行。
提示No such file or directory,则有可能是文件编码格式在平台迁移时产生了变化导致的。
解决办法
因为脚本文件是在windows环境下编写好后传到linux服务器上的,所以编码格式会有问题。
vim 命令下输入set ff查看编码,如果提示为dos,则表示为格式导致的,此时输入set ff=unix,然后保存即可。

3、linux脚本错误: line *: [: missing `]’

脚本语言格式问题,shell脚本对格式的要求可能严格一点
解决办法
错误: line *: [: missing `]’
  写脚本时,我碰到这个问题是因为if [ ]; …else…fi语句
  解决方法: if后面的[] (test) 和条件要有空格,如:
    对于语句 if [-f “/var/www”]; then 应该写为:
    if [ -f “/var/www” ]; then
(https://www.cnblogs.com/bovenson/p/4548079.html)

4、jenkins任务执行完成后,发现tomcat也跟着停了

原因:因为Jenkins执行完当前任务之后需要执行下一个任务,此时Jenkins会直接把tomcat进程杀掉,#因此在脚本中编写的tomcat启动命令是不会执行的。
解决办法
解决jenkins自动杀掉衍生进程:
脚本文件开始时添加:export BUILD_ID=dontKillMe。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!