JenkinsGitLab完成自动化构建部署

关于GitLab安装:GitLab安装-CSDN博客

Docker中安装GitLab:Docker下安装GitLab-CSDN博客

图片[1] - JenkinsGitLab完成自动化构建部署 - MaxSSL

安装JenKins

Jenkins官网:Jenkins

中文版:Jenkins

图片[2] - JenkinsGitLab完成自动化构建部署 - MaxSSL图片[3] - JenkinsGitLab完成自动化构建部署 - MaxSSL图片[4] - JenkinsGitLab完成自动化构建部署 - MaxSSL图片[5] - JenkinsGitLab完成自动化构建部署 - MaxSSL

安装时候中文页面的war包下不来 在英文页面

图片[6] - JenkinsGitLab完成自动化构建部署 - MaxSSL

记得装JDK8以上 JenKins使用java写的 运行JenKins需要JDK环境

我这里已经装好了

图片[7] - JenkinsGitLab完成自动化构建部署 - MaxSSL

将下载好的Jenkins war包上传到服务器

图片[8] - JenkinsGitLab完成自动化构建部署 - MaxSSL

进入war包所在目录

cd /usr/local/develop

运行Jenkins(java -jar jenkins.war -httpPort=8090)这样指定端口运行Jenkins 默认运行在端口号 8080这样启动无法关闭后台 可以用nohup(nohup java -jar jenkins2.war &)

java -jar jenkins.war

这里显示该版本需要JDK11 刚才下的是2.426.3

图片[9] - JenkinsGitLab完成自动化构建部署 - MaxSSL

下载个老版本的

图片[10] - JenkinsGitLab完成自动化构建部署 - MaxSSL图片[11] - JenkinsGitLab完成自动化构建部署 - MaxSSL图片[12] - JenkinsGitLab完成自动化构建部署 - MaxSSL图片[13] - JenkinsGitLab完成自动化构建部署 - MaxSSL图片[14] - JenkinsGitLab完成自动化构建部署 - MaxSSL

进入war包所在目录 运行 这样启动无法关闭后台 可以用nohup(nohup java -jar jenkins2.war &)

java -jar jenkins2.war

又报错 还是JDK问题

图片[15] - JenkinsGitLab完成自动化构建部署 - MaxSSL

重新再下个

2.346.2

图片[16] - JenkinsGitLab完成自动化构建部署 - MaxSSL图片[17] - JenkinsGitLab完成自动化构建部署 - MaxSSL图片[18] - JenkinsGitLab完成自动化构建部署 - MaxSSL

图片[19] - JenkinsGitLab完成自动化构建部署 - MaxSSL图片[20] - JenkinsGitLab完成自动化构建部署 - MaxSSL图片[21] - JenkinsGitLab完成自动化构建部署 - MaxSSL

大概10秒下次安装可以选择插件安装 注意 这里不要选推荐安装 一大堆问题

图片[22] - JenkinsGitLab完成自动化构建部署 - MaxSSL图片[23] - JenkinsGitLab完成自动化构建部署 - MaxSSL

注意 这里不要选推荐安装 一大堆问题

图片[24] - JenkinsGitLab完成自动化构建部署 - MaxSSL

看了下服务器 一大堆报错注意 这里不要选推荐安装 一大堆问题 报错就是因为选择了安装推荐的插件

图片[25] - JenkinsGitLab完成自动化构建部署 - MaxSSL

是Jenkins版本问题 要安装的插件要求更高版本

先继续吧

图片[26] - JenkinsGitLab完成自动化构建部署 - MaxSSL图片[27] - JenkinsGitLab完成自动化构建部署 - MaxSSL图片[28] - JenkinsGitLab完成自动化构建部署 - MaxSSL图片[29] - JenkinsGitLab完成自动化构建部署 - MaxSSL图片[30] - JenkinsGitLab完成自动化构建部署 - MaxSSL图片[31] - JenkinsGitLab完成自动化构建部署 - MaxSSL

Jenkins用来做自动化构建 每一个任务叫一个Item

图片[32] - JenkinsGitLab完成自动化构建部署 - MaxSSL图片[33] - JenkinsGitLab完成自动化构建部署 - MaxSSL

Jenkins就是从Git上把代码拉下来 然后通过maven构建

那么还需要安装Maven

Maven官网

Maven – Welcome to Apache Maven

图片[34] - JenkinsGitLab完成自动化构建部署 - MaxSSL图片[35] - JenkinsGitLab完成自动化构建部署 - MaxSSL图片[36] - JenkinsGitLab完成自动化构建部署 - MaxSSL

进入目录

cd /usr/local/develop

解压

tar zxvf apache-maven-3.9.6-bin.tar.gz

移动文件 像移就移 不想就放着

mv apache-maven-3.9.6 /usr/local/maven

测试Maven构建

/usr/local/maven/bin/mvn

说明没问题

图片[37] - JenkinsGitLab完成自动化构建部署 - MaxSSL

查看环境变量

/usr/local/maven/bin/mvn -v

图片[38] - JenkinsGitLab完成自动化构建部署 - MaxSSL

这样maven就好了

根据提示很多插件都需要2.361.4版本 继续换版本

图片[39] - JenkinsGitLab完成自动化构建部署 - MaxSSL

图片[40] - JenkinsGitLab完成自动化构建部署 - MaxSSL

关掉原来的Jenkins

ps -ef|grep java

图片[41] - JenkinsGitLab完成自动化构建部署 - MaxSSL

试了很多 都需要JDK8以上

随便先玩着吧

nohup java -jar jenkins6.war &

需要安装一个插件 用于使用Maven来构建项目

图片[42] - JenkinsGitLab完成自动化构建部署 - MaxSSL

下次安装可以选择插件安装

图片[43] - JenkinsGitLab完成自动化构建部署 - MaxSSL

往下拉

图片[44] - JenkinsGitLab完成自动化构建部署 - MaxSSL

图片[45] - JenkinsGitLab完成自动化构建部署 - MaxSSL

。。。。。。。。。。。。

图片[46] - JenkinsGitLab完成自动化构建部署 - MaxSSL

2022年7月2日起,jenkins新版本不再支持java8,仅支持java11和java17。

看样子它要求 Jenkins 版本为 2.361.4 或更高。

想着还是额外再装个JDK17

cd/usr/local/develop

在线下载JDK17

wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz

图片[47] - JenkinsGitLab完成自动化构建部署 - MaxSSL

cd/usr/local/develop

解压

tar -zxf jdk-17_linux-x64_bin.tar.gz

图片[48] - JenkinsGitLab完成自动化构建部署 - MaxSSL

暂时就切换环境变量来切换JDK吧

配置环境变量

vim /etc/profile

图片[49] - JenkinsGitLab完成自动化构建部署 - MaxSSL

刷新

source /etc/profile

断开shell 由于缓存原因可能 java -version 还是显示1.8

图片[50] - JenkinsGitLab完成自动化构建部署 - MaxSSL

再切换到1.8试试

图片[51] - JenkinsGitLab完成自动化构建部署 - MaxSSL图片[52] - JenkinsGitLab完成自动化构建部署 - MaxSSL

暂时就用这种笨方法试试吧 下载最新版的JenKins

图片[53] - JenkinsGitLab完成自动化构建部署 - MaxSSL

把JDK换成17

图片[54] - JenkinsGitLab完成自动化构建部署 - MaxSSL

直接下载最新版本

图片[55] - JenkinsGitLab完成自动化构建部署 - MaxSSL

图片[56] - JenkinsGitLab完成自动化构建部署 - MaxSSL

继续刚才的操作

图片[57] - JenkinsGitLab完成自动化构建部署 - MaxSSL

图片[58] - JenkinsGitLab完成自动化构建部署 - MaxSSL图片[59] - JenkinsGitLab完成自动化构建部署 - MaxSSL

因为刚才是 java -jar的方式启动

关闭Jenkins 后台启动

直接ALT+C就可以关闭

nohup java -jar jenkins2.426.3.war &

图片[60] - JenkinsGitLab完成自动化构建部署 - MaxSSL

去Jenkins配置Maven

图片[61] - JenkinsGitLab完成自动化构建部署 - MaxSSL

图片[62] - JenkinsGitLab完成自动化构建部署 - MaxSSL

点击新建Item

图片[63] - JenkinsGitLab完成自动化构建部署 - MaxSSL图片[64] - JenkinsGitLab完成自动化构建部署 - MaxSSL图片[65] - JenkinsGitLab完成自动化构建部署 - MaxSSL

选择一个在自己代码仓库的项目

图片[66] - JenkinsGitLab完成自动化构建部署 - MaxSSL

这个原因是服务器没有装git

图片[67] - JenkinsGitLab完成自动化构建部署 - MaxSSL

安装Git

yum install git

图片[68] - JenkinsGitLab完成自动化构建部署 - MaxSSL

试下git

图片[69] - JenkinsGitLab完成自动化构建部署 - MaxSSL

刷新下页面

图片[70] - JenkinsGitLab完成自动化构建部署 - MaxSSL

图片[71] - JenkinsGitLab完成自动化构建部署 - MaxSSL图片[72] - JenkinsGitLab完成自动化构建部署 - MaxSSL

图片[73] - JenkinsGitLab完成自动化构建部署 - MaxSSL

指定启动端口

图片[74] - JenkinsGitLab完成自动化构建部署 - MaxSSL

上面两个随手做个笔记

firstDevops

图片[75] - JenkinsGitLab完成自动化构建部署 - MaxSSL

不过这只是构建了jar包 就是Jenkins通过 maven自动构建编译了jar

图片[76] - JenkinsGitLab完成自动化构建部署 - MaxSSL

下面把jar包丢到测试服务器上

先安装一个插件

图片[77] - JenkinsGitLab完成自动化构建部署 - MaxSSL

Publish Over SSH

图片[78] - JenkinsGitLab完成自动化构建部署 - MaxSSL

图片[79] - JenkinsGitLab完成自动化构建部署 - MaxSSL

安装完成后

图片[80] - JenkinsGitLab完成自动化构建部署 - MaxSSL

添加一台测试服务器

图片[81] - JenkinsGitLab完成自动化构建部署 - MaxSSL

图片[82] - JenkinsGitLab完成自动化构建部署 - MaxSSL

图片[83] - JenkinsGitLab完成自动化构建部署 - MaxSSL

图片[84] - JenkinsGitLab完成自动化构建部署 - MaxSSL图片[85] - JenkinsGitLab完成自动化构建部署 - MaxSSL图片[86] - JenkinsGitLab完成自动化构建部署 - MaxSSL

图片[87] - JenkinsGitLab完成自动化构建部署 - MaxSSL

目标服务器上的文件夹最好提前建好图片[88] - JenkinsGitLab完成自动化构建部署 - MaxSSL

保存之后已经在部署了

图片[89] - JenkinsGitLab完成自动化构建部署 - MaxSSL

图片[90] - JenkinsGitLab完成自动化构建部署 - MaxSSL

图片[91] - JenkinsGitLab完成自动化构建部署 - MaxSSL

图片[92] - JenkinsGitLab完成自动化构建部署 - MaxSSL

nohup java -jar /root/xxoo/devops-0.0.1-SNAPSHOT.jar > /root/xxoo/server.log 2>&1 &

nohup java -jar /root/xxoo/devops*.jar > /root/xxoo/server.log 2>&1 & 可以用通配符

nohup /usr/local/develop/jdk1.8.0_191/bin/java -jar /root/xxoo/devops-0.0.1-SNAPSHOT.jar > /root/xxoo/server.log 2>&1 &

图片[93] - JenkinsGitLab完成自动化构建部署 - MaxSSL

设置SSH Publishers超时机制

图片[94] - JenkinsGitLab完成自动化构建部署 - MaxSSL

图片[95] - JenkinsGitLab完成自动化构建部署 - MaxSSL

图片[96] - JenkinsGitLab完成自动化构建部署 - MaxSSL

图片[97] - JenkinsGitLab完成自动化构建部署 - MaxSSL

在目标服务器上写个脚本

vim x.sh

图片[98] - JenkinsGitLab完成自动化构建部署 - MaxSSL

图片[99] - JenkinsGitLab完成自动化构建部署 - MaxSSL

图片[100] - JenkinsGitLab完成自动化构建部署 - MaxSSL

./x.sh执行之后

图片[101] - JenkinsGitLab完成自动化构建部署 - MaxSSL图片[102] - JenkinsGitLab完成自动化构建部署 - MaxSSL

删除xxx.txt文件 尝试用Jenkins以命令的方式传过来是否可以用

rm -rf xxx.txt

这里也可以向目标服务器发送命令

在这里可以比如说kill 目标服务器上某个进程 或者执行某个脚本

图片[103] - JenkinsGitLab完成自动化构建部署 - MaxSSL

图片[104] - JenkinsGitLab完成自动化构建部署 - MaxSSL

目标服务器里又有了 xxx.txt 说明 脚本执行成功

图片[105] - JenkinsGitLab完成自动化构建部署 - MaxSSL

那么我们可以在目标服务器写脚本 由Jenkins来执行

编写脚本

vim x.sh

图片[106] - JenkinsGitLab完成自动化构建部署 - MaxSSL

保存后可以试下

图片[107] - JenkinsGitLab完成自动化构建部署 - MaxSSL图片[108] - JenkinsGitLab完成自动化构建部署 - MaxSSL

还存在一个问题就是 如果jar包没有运行 会报错

图片[109] - JenkinsGitLab完成自动化构建部署 - MaxSSL

那就添加一个判断

图片[110] - JenkinsGitLab完成自动化构建部署 - MaxSSL

图片[111] - JenkinsGitLab完成自动化构建部署 - MaxSSL

其实这里源目录不应该删掉 把日志全删了 这里只是单纯使用下 具体以后要做优化

kill -9是直接杀死

kill -15 优雅点死 反正是死 早死晚死

图片[112] - JenkinsGitLab完成自动化构建部署 - MaxSSL

图片[113] - JenkinsGitLab完成自动化构建部署 - MaxSSL图片[114] - JenkinsGitLab完成自动化构建部署 - MaxSSL

提交更新代码

图片[115] - JenkinsGitLab完成自动化构建部署 - MaxSSL

图片[116] - JenkinsGitLab完成自动化构建部署 - MaxSSL

图片[117] - JenkinsGitLab完成自动化构建部署 - MaxSSL图片[118] - JenkinsGitLab完成自动化构建部署 - MaxSSL

图片[119] - JenkinsGitLab完成自动化构建部署 - MaxSSL

图片[120] - JenkinsGitLab完成自动化构建部署 - MaxSSL

图片[121] - JenkinsGitLab完成自动化构建部署 - MaxSSL

像上面这样 还是需要手动去构建 要去JenKins的Item任务里点一下才去构建部署

但一般也不建议使用,比如在测试时候,一个功能点的开发还没全部完成,git一提交就自动部署,一般是不建议的

用不用是你的事,但你得会

原理就是GitLab用钩子自动触发Jenkins自动构建

先看下面这个

图片[122] - JenkinsGitLab完成自动化构建部署 - MaxSSL

就是说你在浏览器里 输入

http://JenKinsIP或者域名:8080/me/my-views/view/all/job/firstDevops/build?token=123456

或者

http://JenKinsIP或者域名:8080/buildWithParameters?token=TOKEN_NAME

图片[123] - JenkinsGitLab完成自动化构建部署 - MaxSSL

Jenkins就自动构建部署了

图片[124] - JenkinsGitLab完成自动化构建部署 - MaxSSL

那么让GitLab钩子去自动调用就好了

但是存在一个问题

在自己同一个浏览器,是可以的原因是你已经登录了

但是你用psotMan或者换成其他浏览器就不行了

会要求你先登录

图片[125] - JenkinsGitLab完成自动化构建部署 - MaxSSL

图片[126] - JenkinsGitLab完成自动化构建部署 - MaxSSL

图片[127] - JenkinsGitLab完成自动化构建部署 - MaxSSL

解决办法:

Jenkins先下载一个插件

Build Authorization Token Root

图片[128] - JenkinsGitLab完成自动化构建部署 - MaxSSL

图片[129] - JenkinsGitLab完成自动化构建部署 - MaxSSL

这个插件的作用就是触发远程校验之后 用它的方式做构建触发 不用再登录了

buildByToken/build” />那么job就是Item任务名字

token就是我们设置的Item的校验

现在用postMan

图片[130] - JenkinsGitLab完成自动化构建部署 - MaxSSL

可以看到 已经在构建部署了

图片[131] - JenkinsGitLab完成自动化构建部署 - MaxSSL

那么就把这个URL地址 让GitLab钩子调用就好了

产生时间之后 让GitLab调用URL 让JenKins构建部署

图片[132] - JenkinsGitLab完成自动化构建部署 - MaxSSL

SSL加上也没事

图片[133] - JenkinsGitLab完成自动化构建部署 - MaxSSL

有些GitLab版本不同 上面可能添加不上

设置下网络 即可

图片[134] - JenkinsGitLab完成自动化构建部署 - MaxSSL

图片[135] - JenkinsGitLab完成自动化构建部署 - MaxSSL

可以点击测试看看JenKins有没有构建部署

测试下

提交代码后 会不会自动构建部署

图片[136] - JenkinsGitLab完成自动化构建部署 - MaxSSL

图片[137] - JenkinsGitLab完成自动化构建部署 - MaxSSL

图片[138] - JenkinsGitLab完成自动化构建部署 - MaxSSL

有好几种构建部署触发器

图片[139] - JenkinsGitLab完成自动化构建部署 - MaxSSL

图片[140] - JenkinsGitLab完成自动化构建部署 - MaxSSL

图片[141] - JenkinsGitLab完成自动化构建部署 - MaxSSL

下面说下定时构建

JenKins cron表达式和标准的cron表达式是有一定区别的 自己查

图片[142] - JenkinsGitLab完成自动化构建部署 - MaxSSL

这边我自己已经测试过了 就是每隔2分钟会去GitLab上拉代码进行构建部署(注意分支 确定是你JenKins上配置的)

一般不会这么做,要做也比如说每天晚上12点 或者说 某几天的晚上12点

图片[143] - JenkinsGitLab完成自动化构建部署 - MaxSSL

这个我就取消掉了 一般不会

图片[144] - JenkinsGitLab完成自动化构建部署 - MaxSSL

Poll SCM触发构建和上面定时差不多 Jenkins会定时轮询Gitlab上的代码
(注意你配置的分支)

图片[145] - JenkinsGitLab完成自动化构建部署 - MaxSSL

图片[146] - JenkinsGitLab完成自动化构建部署 - MaxSSL

图片[147] - JenkinsGitLab完成自动化构建部署 - MaxSSL

测试通过

我自己测试方式很简单 提交代码到Gitlab 注意测试时候把远程触发关闭

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享