一.linux系统中JENKINS的安装
注意:安装jenkins需要安装jdk,而且具体版本的jenkins有相对应的jdk版本。可参考以下链接。
jenkins的安装也可以去jenkins的官网,官网有安装手册
我的系统配置 2核cpu 8G 内存 40G磁盘
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key
sudo yum upgrade
# Add required dependencies for the jenkins package
sudo yum install fontconfig java-17-openjdk
sudo yum install jenkins
sudo systemctl daemon-reload

安装好之后启动jenkins,但是我的这个systemctl start jenkins是有问题的(可以去看一下jenkins的service文件。这里不细说)

所以我直接使用命令启动jenkins
/usr/bin/jenkins
然后它会一直在前端运行,按ctrl+c 就能终止jenkins

或者放到后台执行
nohup /usr/bin/jenkins &>/dev/null &

然后登陆http://<jenkins服务ip>:8080
加载插件。以前是这个插件没有加载成功就进不去,但是我今天插件还没有完全下载好。有两个插件没有安装好也能进入主页面了。进去之后输入初始密码然后再配置一个新账号(超级用户)。
登陆的初始密码

二.安装插件的方法
jenkins插件的存放位置

1.首先可以去康康这个里面,这个里面是可用可直接下载的插件。可以先在这里康康能不能直接把刚刚缺少的插件下载安装

我刚进去的时候,这个里面有你刚刚初始化的时候没有装好的插件

2.如果web界面下载失败,可以先直接下载到本地,然后传到/root/.jenkins/plugins下
去网站下
Jenkins Pluginshttps://plugins.jenkins.io/
输入你想下载的插件


选择要安装的版本点击即会下载到本地

上传

三、jenkins相关
1.邮箱配置 系统管理的系统配置里 前面 这三个邮箱要一样
2.远程拉取代码
1)直接克隆
从gitlab上拉取代码到jenkins然后,由jenkins部署到web上
*就是jenkins像我这样安装的时候默认启动服务的用户是jenkins,jenkins很多权限都没有,所以要更改启动jenkins服务的用户,改成root。
find / -name "jenkins.service"
vim path/jenkins.service
User=jenkins
Group=jenkins
ssh-keygen -t rsa -b 4096 -C "3515694112@jenkins"
ssh-copy-id root@<web.ip>
在jenkins生成私钥公钥后
把公钥放到gitlab上

私钥放到jenkins的







2)配置拉取

这里插入一下
Jenkins 用户配置文件

这个文件记录了jenkins插件的更新源

3.jenkins构建触发器
触发器一般在测试环境中使用,当gitlab中的代码发生变化的时候,gitlab会主动触发jenkins,然后执行相关服务代码的重新上线。
老版本是使用插件,但是新版本使用插件已经没有用了。
构建触发器(不安装插件)
可以自己生成一个随机token
openssl rand -hex 12(随机的 12 字节的十六进制字符串)



然后触发任务脚本执行
4.pipline的使用
我觉得pipline是把任务模块化了,而脚本是直接执行一整个大任务
流水线语法https://www.jenkins.io/zh/doc/book/pipeline/syntax/
下面是一个简单的pipline script
pipeline {
agent any //这个设置,可以在stage中设置哪个jenkins执行(master,slave) 更灵活
stages {
stage('change dir') {
steps {
dir('/jenkins') {
// some block
}
}
}
stage('shell script') {
steps {
sh '''echo "I love you"'''
}
}
}
}
还可以把pipline scripts传到gitlab上去然后clone一下执行(pipline声明式)
5.jenkins的分布式
如果jenkins的服务负载很高,单个是无法承载的,就要分布式

Jenkins slave 要安装jdk
mkdir /var/lib/jenkins #jenkins相关数据路径
推荐slave的工作目录和master的工作目录一样的路径,因为后面执行脚本啥的方便
jenkins master会以ssh的方式连接jenkins slave ,具体就不说了。有需要的同学call我吧,实在懒得截屏
脚本路径是jenkins在gitlab中的路径
可以把Jenkinsfile上传到gitlab上,然后jenkins从gitlab上拉取
代码质量测试
jenkins实现灰度部署
灰度部署就是对于要更新的服务,我们先对后端服务器的一部分进行更新,然后等到确定这个更新后的服务也能稳定运行之后在陆续更新全部的服务器