Jenkins集成Github自动部署
in 技术 with 1 comment

Jenkins集成Github自动部署

in 技术 with 1 comment

前言

以下教程看不懂你砍我,我就不信了.百度一搜很多文章细节没讲清楚,导致踩了很多坑.

尽量以我踩过的坑写的足够详细,如果不懂的地方可以留言

前期准备工作

因官网下载慢我也分享到网盘了,还有国内加速镜像地址.

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

yum install git -y

sudo apt-get install git -y

以上尽量手动安装并统一下载到同一个文件夹内方便管理,避免自动安装,自动安装的路径在jenkins配置路径时有权限不能识别问题.

安装jenkins

运行jenkins

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应用,这个应用也就是我们的应用,导致死活启动不了.(官网文档解决方案都尝试过了,包括)都无法解决.

1.java -Dhudson.util.ProcessTree.disable=true -jar jenkins.war

2.BUILD_ID=dontKillMe

我这里写两种方式,如果遇到杀进程问题则尝试更换另一种.

第一种

在 SSH Publishers的 Exec command中执行部署脚本

脚本

demo.sh脚本监测是否在运行,运行则杀掉再重新部署.

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/