简单描述Jenkins的工作流程
jenkins发起git同步请求,在服务器端拉取你的项目最新情况更新代码,更新完成后停止服务器上的Tomcat服务,通过Maven构建你的项目,打成War包,替换原来Tomcat中的旧项目,然后重新启动Tomcat,从而完成自动化部署。(你的项目必须是maven项目哦)
其中牵扯到的基础知识点包含《 jdk环境搭建》《Centos下git安装》《Centos下maven安装》《Centos下安装Tomcat》
教程
1、安装jenkins
jenkins的使用可以在windows下下载安装包,安装使用,也可以下载jenkins.war直接放到你的tomcat里面访问使用,今天我们就用第二种下载war包的形式。
推荐下载地址:https://mirrors.tuna.tsinghua.edu.cn/jenkins/war/(国内的清华镜像)
下载最新版,把下载好的war包放到你的tomcat目录的webapps下,启动tomcat,浏览器里直接访问jenkins项目(下面的链接记得换成自己的端口,默认是8080)
项目地址:http://localhost:8080/jenkins/
可能出现的问题:访问项目长时间进入不了输入密钥的界面,一直是加载中,这是jenkins的资源路径需要修改,默认情况下是用的国外的域名链接,需要修改成国内的镜像,这个就很多了这里提供几个作为参考,大家用自己找的也可以。
修改方法:
找到C:user(用户)/Administrator(管理员)/.jenkins/hudson.model.UpdateCenter.xml
打开修改里面的内容
<?xml version='1.1' encoding='UTF-8'?>
<sites>
<site>
<id>default</id>
<url>https://updates.jenkins.io/update-center.json</url>
</site>
</sites>
url推荐地址1:http://mirror.esuni.jp/jenkins/updates/update-center.json
url推荐地址2:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/stable-2.7/update-center.json
修改完后重启,就可以继续访问了。
2、输入密钥访问项目
密码在:C:user(用户)/Administrator(管理员)/.jenkins/secrets/initialAdminPassword文件里面,复制粘贴后点击继续
3、安装插件
选择推荐安装
选择建议安装插件,等待安装时间很长很长。。。。。
4、创建账户
输入表单里的信息完成创建
5、配置全局参数(Global Tool Configuration)
jdk配置:填写服务器端jdk的位置,填写到jdk的根目录即可
git配置:填写服务器端git位置,需要填写到git根目录下的bin/git
maven配置:填写服务器端maven根目录
6、创建一个节点,让节点上线
填写节点名称
启动方式设置为SSH,填写服务器ip,设置服务器的用户(SSH)
点击高级设置端口号,jdk路径等信息
启动前,在你的centos服务器创建目录 /root/jenkins ,启动节点。
7、创建你的自动部署任务
创建新任务
填写任务名字,选择红框里的项目
填写描述,选择限制项目的运行节点,填写刚才的节点
填写git项目路径使用ssh方式,创建一个ssh用户填写服务器端的git私钥
新增一个设置,克隆和拉取操作的超时时间设置大一些
构建步骤添加一个Execute shell 填写shell脚本,完成自动化执行脚本的执行
#shell命令
#当jenkins进程结束后新开的tomcat进程不被杀死
BUILD_ID=DONTKILLME
#加载变量
. /etc/profile
#执行写好的自动化部署脚本
sh /root/jenkins/deploy.sh
服务器端需要在/root/jenkins/下创建deploy.sh文件,拷贝下面的内容,对应的地址修改为你自己的项目和Tomat路径
cd /root/jenkins/
vim deploy.sh
#需要配置如下参数
# 项目路径, 在Execute Shell中配置项目路径, pwd 就可以获得该项目路径
export PROJ_PATH=/root/jenkins/workspace/JenkinsTest
# 输入你的环境上tomcat的全路径
export TOMCAT_APP_PATH=/usr/local/tomcat_web
### base 函数
killTomcat(){
cd $TOMCAT_APP_PATH/bin
sh shutdown.sh
}
cd $PROJ_PATH
mvn clean install
# 停tomcat
killTomcat
# 删除原有工程
rm -rf $TOMCAT_APP_PATH/webapps/ROOT
rm -f $TOMCAT_APP_PATH/webapps/ROOT.war
rm -f $TOMCAT_APP_PATH/webapps/comweb.war
# 复制新的工程到tomcat上
cp $PROJ_PATH/target/comweb.war $TOMCAT_APP_PATH/webapps/
cd $TOMCAT_APP_PATH/webapps/
mv comweb.war ROOT.war
# 启动Tomcat
cd $TOMCAT_APP_PATH/
sh bin/startup.sh
完成上述操作后
构建项目,如果报错根据报错内容继续调试即可。
推荐git的仓库使用gitee,速度快,使用github可能构建会失败,超时错误。
8、可能会出现的问题总结了下大概分为几种
第一种:git的密钥设置问题,会报错。
Error cloning remote repo 'origin'
...
..
.
处理方法:就是git密匙没设置好,在jenkins里面要设置的是在centos服务器git生成的私钥,不是拷贝到github或者gitee的公钥,这一点一定注意,还有就是拷贝密钥的时候要拷贝完整,不知道大家有没有碰到过,可能是我太蠢了吧,我一开始弄的时候因为在那种cmd命令行的情况下查看一个内容很长的东西可能底下会显示不全需要用键盘往下移动才能看全,把我坑惨了,折腾了1个多小时才发现,哈哈哈。
第二种:项目过大拉取过程中超时,如果你用的github可能会碰到这个问题
> /usr/local/git/bin/git fetch --tags --progress -- git@github.com:diingMao/comWeb_pro.git +refs/heads/*:refs/remotes/origin/* # timeout=10
FATAL: java.io.IOException: Unexpected termination of the channel
java.io.EOFException
at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2675)
at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:3150)
at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:859)
....
...
..
.
处理方法:直接更换国内的git仓库吧,用gitee速度快的飞起。
第三种:项目拉取后maven编译过程中报错。一般是项目有问题可能大家碰到的情况不太一样,我碰2中情况供大家参考。
a、文件格式异常:utf-8 和 utf-8(bom)有些自己创建的类是bom类型的编译会出问题,使用Notepad++变更类的编码集为普通utf-8,即可通过编译打包。
Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile (default-compile) on project ctkMaven: Compilation failure: Compilation failure:
[ERROR] /root/jenkins/workspace/JenkinsTest/src/com/framework/util/QRCodeUtil.java:[1,0] error: illegal character: '\ufeff'
[ERROR] /root/jenkins/workspace/JenkinsTest/src/com/framework/util/QRCodeUtil.java:[1,9] error: class, interface, or enum expected
....
...
..
.
b、java类异常:有些类在linux和windows环境下jre的类库支持会有一些小小不同,有些已经失效的类会在linux环境下报错,需要调整代码,重构下代码更换已经过期的类,即可通过编译打包。
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile (default-compile) on project ctkMaven: Compilation failure: Compilation failure:
[ERROR] /root/jenkins/workspace/JenkinsTest/src/com/framework/util/ImageUtil.java:[18,31] error: package com.sun.image.codec.jpeg does not exist
....
...
..
.