我的环境 : Linux系统:tomcat-9,jdk-1.8,maven-3.5.4,git-2.18.2(自行安装好哦)
准备 :
修改conf/tomcat-users.xml(开启用户权限)
添加以下内容(username,password自行修改,用户登录管理页面)
<role rolename="admin-gui"/>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="admin" password="admin" roles="admin-gui,manager-gui,manager-script"/>
再新建文件(目录不存在则创建:mkdir创建目录,vim可以新建文件并编辑)
conf/Catalina/localhost/manager.xml
manager.xml填入以下代码
<Context privileged="true" antiResourceLocking="false"
docBase="${catalina.home}/webapps/manager">
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^.*$" />
</Context>
配置完以上信息后,将jenkins.war包放入tomcat的webapps目录(我用tomcat启动Jenkins,所以这里用的是war包而不是rpm安装) .
启动tomcat后就可以进入管理页面
进入tomcat首页,点击右侧的Manager App
输入上面配的账号密码进入管理页面,我在这里启动和停止Jenkins
首次载入Jenkins(http://ip:tomcat的端口号/jenkins/),密码按照提示去查看
初始化完成后会让你选择安装常用的插件.
抱歉这里有坑,可能啥也装不了.
解决方法:手动进入(http://ip:tomcat的端口号/jenkins/pluginManager/advanced),拉倒最下面将这个URL(https://updates.jenkins.io/update-center.json)修改成(http://updates.jenkins.io/update-center.json)
我下面的图都是中文的,大家可以去查下怎么安装中文插件.
接下来是插件安装:系统管理–>插件管理–>可选插件
安装插件Generic Webhook Trigger,Deploy to container Plugin,Git,Gitee,Maven Integration plugin
Jenkins配置Linux里的jdk,git,maven路径:系统管理–>全局工具配置
配置gitee链接以及giteeAPI令牌:系统管理–>系统配置:找到Gitee配置(这里我不知道现在用没用到,也是跟着百度瞎配)
链接名:Gitee
Gitee 域名 URL:https://gitee.com/
证书令牌:点击边上的添加
Gitee API V5 的私人令牌就去他给的网址生成一个填进去
接下来终于到了弄项目流程
Jenkins大致流程
1:你给他源码地址,他用你的账号密码去拉取
2:拉取项目前后可以执行脚本,这个脚本得自己写
新建任务 起个任务名字 点击构建maven项目
Gitee链接:如果上面那个Gitee配置了话这里就能选择(目前不太清楚这个有没有用)
源码管理:点击Git
Repository URL:去你的gitee项目复制
Credentials:选择不了上面的那个Gitee令牌(所以不清楚这个令牌目前的作用),点击右边的添加邮箱账号密码
至此Jenkins可以拉取项目源码了
现在是项目发布的流程了
1:停止之前旧项目进程
–> Pre Steps
停止脚本如下
echo "准备停止dubbo-client"
pid=`ps -ef | grep dubbo-client.jar | grep -v grep | awk '{print $2}'`
if [ -n "$pid" ]
then
kill -9 $pid
fi
echo "停止dubbo-client完毕"
dubbo-client.jar是我项目运行是的名称.自行修改成自己的
2:利用maven将刚刚拉取的源码打包
clean package -Dmaven.test.skip=true
3:运行项目
–> Post Steps 同样 添加shell脚本
我的具体脚本
BUILD_ID=DONTKILLME
echo "移动jar包到webee目录,并去掉版本号名称"
if [ ! -d "/usr/webee/dubbo-client/" ];then
mkdir /usr/webee/dubbo-client/
else
echo "文件夹已经存在"
fi
if [ ! -f "/usr/webee/dubbo-client/dubbo-client.jar" ];then
echo "文件不存在"
else
rm -f /usr/webee/dubbo-client/dubbo-client.jar
fi
mv -f /root/.jenkins/workspace/dubbo-client/target/dubbo-client-0.0.1-SNAPSHOT.jar /usr/webee/dubbo-client/dubbo-client.jar
echo "移动jar包完成"
echo "启动dubbo-client服务"
nohup java -jar /usr/webee/dubbo-client/dubbo-client.jar > /usr/webee/dubbo-client/dubbo-client.log 2>&1 &
echo "启动dubbo-client服务完成"
脚本解释:
BUILD_ID=DONTKILLME 系统大哥别杀死我这个进程(这个别忘记了)
第一个if 是我习惯将运行的jar包放到我指定的目下运行,大家可以自行修改目录.
第二个if 干掉旧项目包
mv -f 是将maven打的包移动到我指定的目录下,并改名
nohup 是后台运行java包 (> : 日志目录文件) (2>&1 & : 好像是后台写入日志 )
我这里Jenkins下载项目源码的路径:/root/.jenkins/workspace/
至此配置完成,点击项目的立即建构就可以自动执行 拉取项目,杀死进程,打包项目,运行项目了.
有的项目如果maven没有帮你打包(我就碰到一个子项目没帮我打包),可以在脚本里自己执行maven打包的命令: cd到子项目源码目录 执行(mvn clean package -Dmaven.test.skip=true) 这样一样可以得到jar包
总之理解流程,不要少了流程就行.修改jar名字和移动目录到哪里哪里都是可有可无的.
最后再提一次Jenkins打包发布流程:1:Jenkins拉取项目源码.2:干掉需要重新发布的项目进程.3:源码打包.4:运行新的项目包