关于GitLab安装:GitLab安装-CSDN博客
Docker中安装GitLab:Docker下安装GitLab-CSDN博客
安装JenKins
Jenkins官网:Jenkins
中文版:Jenkins
安装时候中文页面的war包下不来 在英文页面
记得装JDK8以上 JenKins使用java写的 运行JenKins需要JDK环境
我这里已经装好了
将下载好的Jenkins war包上传到服务器
进入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
下载个老版本的
进入war包所在目录 运行 这样启动无法关闭后台 可以用nohup(nohup java -jar jenkins2.war &)
java -jar jenkins2.war
又报错 还是JDK问题
重新再下个
2.346.2
大概10秒 下次安装可以选择插件安装 注意 这里不要选推荐安装 一大堆问题
注意 这里不要选推荐安装 一大堆问题
看了下服务器 一大堆报错 注意 这里不要选推荐安装 一大堆问题 报错就是因为选择了安装推荐的插件
是Jenkins版本问题 要安装的插件要求更高版本
先继续吧
Jenkins用来做自动化构建 每一个任务叫一个Item
Jenkins就是从Git上把代码拉下来 然后通过maven构建
那么还需要安装Maven
Maven官网
Maven -- Welcome to Apache Maven
进入目录
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
说明没问题
查看环境变量
/usr/local/maven/bin/mvn -v
这样maven就好了
根据提示很多插件都需要2.361.4版本 继续换版本
关掉原来的Jenkins
ps -ef|grep java
试了很多 都需要JDK8以上
随便先玩着吧
nohup java -jar jenkins6.war &
需要安装一个插件 用于使用Maven来构建项目
下次安装可以选择插件安装
往下拉
。。。。。。。。。。。。
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
cd /usr/local/develop
解压
tar -zxf jdk-17_linux-x64_bin.tar.gz
暂时就切换环境变量来切换JDK吧
配置环境变量
vim /etc/profile
刷新
source /etc/profile
断开shell 由于缓存原因可能 java -version 还是显示1.8
再切换到1.8试试
暂时就用这种笨方法试试吧 下载最新版的JenKins
把JDK换成17
直接下载最新版本
继续刚才的操作
因为刚才是 java -jar的方式启动
关闭Jenkins 后台启动
直接ALT+C就可以关闭
nohup java -jar jenkins2.426.3.war &
去Jenkins配置Maven
点击新建Item
选择一个在自己代码仓库的项目
这个原因是服务器没有装git
安装Git
yum install git
试下git
刷新下页面
指定启动端口
上面两个随手做个笔记
firstDevops
不过这只是构建了jar包 就是Jenkins通过 maven自动构建编译了jar
下面把jar包丢到测试服务器上
先安装一个插件
Publish Over SSH
安装完成后
添加一台测试服务器
目标服务器上的文件夹最好提前建好
保存之后已经在部署了
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 &
设置SSH Publishers超时机制
在目标服务器上写个脚本
vim x.sh
./x.sh 执行之后
删除xxx.txt文件 尝试用Jenkins以命令的方式传过来是否可以用
rm -rf xxx.txt
这里也可以向目标服务器发送命令
在这里可以比如说kill 目标服务器上某个进程 或者执行某个脚本
目标服务器里又有了 xxx.txt 说明 脚本执行成功
那么我们可以在目标服务器写脚本 由Jenkins来执行
编写脚本
vim x.sh
保存后可以试下
还存在一个问题就是 如果jar包没有运行 会报错
那就添加一个判断
其实这里源目录不应该删掉 把日志全删了 这里只是单纯使用下 具体以后要做优化
kill -9是直接杀死
kill -15 优雅点死 反正是死 早死晚死
提交更新代码
像上面这样 还是需要手动去构建 要去JenKins的Item任务里点一下才去构建部署
但一般也不建议使用,比如在测试时候,一个功能点的开发还没全部完成,git一提交就自动部署,一般是不建议的
用不用是你的事,但你得会
原理就是GitLab用钩子自动触发Jenkins自动构建
先看下面这个
就是说你在浏览器里 输入
http://JenKinsIP或者域名:8080/me/my-views/view/all/job/firstDevops/build?token=123456
或者
http://JenKinsIP或者域名:8080/buildWithParameters?token=`TOKEN_NAME`
Jenkins就自动构建部署了
那么让GitLab钩子去自动调用就好了
但是存在一个问题
在自己同一个浏览器,是可以的原因是你已经登录了
但是你用psotMan或者换成其他浏览器就不行了
会要求你先登录
解决办法:
Jenkins先下载一个插件
Build Authorization Token Root
这个插件的作用就是触发远程校验之后 用它的方式做构建触发不用再登录了
buildByToken/build?job=firstDevops&token=123456
那么job就是Item任务名字
token就是我们设置的Item的校验
现在用postMan
可以看到 已经在构建部署了
那么就把这个URL地址 让GitLab钩子调用就好了
产生时间之后 让GitLab调用URL 让JenKins构建部署
SSL加上也没事
有些GitLab版本不同 上面可能添加不上
设置下网络 即可
可以点击测试看看JenKins有没有构建部署
测试下
提交代码后 会不会自动构建部署
有好几种构建部署触发器
下面说下定时构建
JenKins cron表达式和标准的cron表达式是有区别的 自己查