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。
来源:CSDN
作者:站在墙头上
链接:https://blog.csdn.net/qq_19674263/article/details/103541741