前言
以下教程看不懂你砍我,我就不信了.百度一搜很多文章细节没讲清楚,导致踩了很多坑.
尽量以我踩过的坑写的足够详细,如果不懂的地方可以留言
前期准备工作
因官网下载慢我也分享到网盘了,还有国内加速镜像地址.
JDK
https://www.jianshu.com/p/5f9b4682a6c5
国内镜像
https://mirrors.huaweicloud.com/java/jdk/8u151-b12/
maven
https://www.cnblogs.com/jtnote/p/9982185.html
阿里源
https://www.cnblogs.com/pxblog/p/11617609.html
Jenkins 2.235.4
链接:https://pan.baidu.com/s/1hgLjoo0V5rPIWGWypy2aUA 提取码:3fjz
git
代码语言:javascript复制 yum install git -y
或
代码语言:javascript复制 sudo apt-get install git -y
以上尽量手动安装并统一下载到同一个文件夹内方便管理,避免自动安装,自动安装的路径在jenkins配置路径时有权限不能识别问题.
安装jenkins
运行jenkins
代码语言:javascript复制 java -Dhudson.util.ProcessTree.disable=true -jar --httpPort=8081 jenkins.war
默认8080,我这里已经有项目占用,于是指定8081端口
启动成功得到一个密码,后续需要.
将刚才密码填入进行下一步,网速不好时稍慢
先取消全部,再手动选择汉化中文包和git安装
publish over ssh:用于ssh访问远程服务器(自动部署) git:拉取github代码 locale:中文汉化包
等待安装完毕,稍慢
全局配置
Tip:提示几个好用技巧
到目录下执行pwd命令显示当前完整路径
whereis命令可以显示安装路径
JDK
Git
同上
Maven
同上
注意,如果Git没有展示配置说明没有安装Git插件
系统配置
我们来配置远程服务器信息,用于github代码拉取部署到指定的服务器.
Publish over SSH
找到Publish over SSH,注意要先安装publish over ssh插件才会显示.
添加一个SSH Servers
配置完成点击test测试是否成功
构建应用
这时候我们如果需要构建maven应用并自动部署还需要安装以下两个插件Maven Integration plugin 用来构建maven的项目,一个是对容器依赖的插件;Deploy to container Plugin 自动发布到相关容器上去
Deploy to container同上,取决网速,稍慢.
勾选安装完成后重启Jenkins(空闲时)
构建maven应用
我这里创建了一个demo springboot项目
https://github.com/SAnBlog/demo
点击添加并填好github帐号密码
自动部署,注意这里只能回调公网地址.
完整地址如下,浏览器手动执行也可以部署.
http://192.168.31.247:8081/job/demo/build?token=demo
配置构建环境
注意事项
本文章版本为Jenkins 2.235.4
网上很多文章都是2.x以下的,导致构建配置项目有点出入,我则遇到最大的一个坑就是在云服务器上安装完毕,正常部署项目,而在树莓派上按照一模一样的版本环境会杀掉进程,也就是kill掉以下的sh demo.sh应用,这个应用也就是我们的应用,导致死活启动不了.(官网文档解决方案都尝试过了,包括)都无法解决.
代码语言:javascript复制 1.java -Dhudson.util.ProcessTree.disable=true -jar jenkins.war
2.BUILD_ID=dontKillMe
我这里写两种方式,如果遇到杀进程问题则尝试更换另一种.
第一种
在 SSH Publishers的 Exec command中执行部署脚本
脚本
demo.sh脚本监测是否在运行,运行则杀掉再重新部署.
代码语言:javascript复制 echo "stop服务开始"
#重启tomcat服务器
pid=`lsof -i:9000|awk 'NR==2{print $2}'`
echo $pid
kill -9 $pid
echo "stop服务脚本结束"
echo "start服务脚本开始"
nohup java -jar /home/pi/jdk/deploy/demo-1.0.jar > /home/pi/jdk/deploy/$(date '%Y%m%d').log &
echo "start服务脚本结束"
这里remote directory和上面远程服务器配置是会叠加的,如果目录不变这里无需配置(下图为远程服务器配置)
如果再次配置会以ssh servers的remote directory拼接此路径
会导致成"/home/pi/jdk/deploy/home/pi/jdk/deploy"
保存即可,我们点击立即构建,控制台输出查看构建详情日志
(如果maven源不改成阿里源会相当慢)
第二种
唯一的区别就是执行部署的命令换个地方,构建完成后执行我们的命令,其他配置不变.
成功如上,打开浏览器
存在shell脚本被杀问题解决方案
(低版本解决方案,无法解决则尝试本文章第二种配置)
https://blog.xiehaibo.cn/2018/01/29/after-jenkins-build-and-execute-shell-success_the-started-process-is-killed/