#根据jenkins 版本安装适合的jdk版本

https://pkg.jenkins.io/redhat-stable/

1、安装jdk

yum install java-17-openjdk -y

2、安装jenkins

#在线yum安装

2.1、添加Jenkins库
wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key
yum install jenkins -y

#RPM 离线安装

#阿里 jenkins地址

https://mirrors.aliyun.com/jenkins/

wget https://mirrors.aliyun.com/jenkins/redhat-stable/jenkins-2.426.3-1.1.noarch.rpm
rpm -ivh jenkins-2.426.3-1.1.noarch.rpm

2.2、修改配置端口默认8080
cat /usr/lib/systemd/system/jenkins.service
Environment="JENKINS_PORT=8081"

2.3、数据目录单独盘挂载 /var/lib/jenkins/
2.4、启动服务
systemctl daemon-reload && systemctl enable --now jenkins

#基本配置

3、获取管理员密码
cat /var/lib/jenkins/secrets/initialAdminPassword

4、安装推荐的插件
5、创建管理员用户
6、配置jenkins地址
7、修改admin用户密码和时区
依次点击用户名——>Configure找到密码和时区设置【Asia/Shanghai】

8、修改插件安装源,修改国内插件安装源,提高插件下载速度

https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

 

9、卸载插件

#停止服务
systemctl stop jenkins
#删除插件目录下异常插件.jpi文件
rm -rf /var/lib/jenkins/plugins/role-strategy.jpi

#启动服务
systemctl start jenkins

10、配置用户权限

10.1、安装插件

利用Role-based Authorization Strategy插件来管理Jenkins用户权限

#开启权限全局安全配置
依次点击jenkins——>系统管理——>全局安全配置,将授权策略改为Role-Based Strategy,也就是基于角色的权限

11、创建测试任务

12、权限配置

12.1、创建角色

依次点击jenkins——>系统管理——>Manage and Assign Role

12.2、配置角色权限
#Global roles,创建全局角色,例如管理员,作业创建者,匿名角色等,从而可以在全局基础上设置总体,代理,作业,运行,查看和SCM权限
这里创建openeuler 角色

12.3、Item roles,创建项目角色,仅允许基于项目设置Job和Run权限

12.4、创建完item roles后,我们可以点击蓝色pattern表达式查看是否匹配到任务

13、创建用户
依次点击jenkins——>系统管理——>管理用户——>Create User
13.1、授权用户,有了用户和角色后,接下来的操作就是将用户与角色进行绑定
依次点击jekins——>系统管理——>Manage and Assign Roles——>Assign Roles

14、登录验证

15、slave节点配置

说明:Jenkins采用Master/Slave架构。Master/Slave相当于Server和agent的概念,Master提供web接口让用户来管理Job和Slave,Job可以运行在Master本机或者被分配到Slave上运行。一个Master可以关联多个Slave用来为不同的Job或相同的Job的不同配置来服务。
Jenkins的Master/Slave机制除了可以并发的执行构建任务,加速构建以外。还可以用于分布式自动化测试,当自动化测试代码非常多或者是需要在多个浏览器上并行的时候,可以把测试代码划分到不同节点上运行,从而加速自动化测试的执行

15.1、开启tcp代理50000端口
系统管理——全局安全配置-代理

 

15.2、添加slave节点

Name:Slave机器的名字
Description:描述 ,不重要 随意填
Number of excutors:允许在这个节点上并发执行任务的数量,即同时可以下发多少个Job到Slave上执行,一般设置为 cpu 支持的线程数。[注:Master Node也可以通过此参数配置Master是否也执行构建任务、还是仅作为Jenkins调度节点]
Remote root directory:用来放工程的文件夹,jenkins master上设置的下载的代码会放到这个工作目录下。
Lables:标签,用于实现后续Job调度策略,根据Jobs配置的Label选择Salve Node

用法:只允许运行绑定到这台机器的Job

添加完毕后,在Jenkins主界面,可以看到新添加的Slave Node,但是红叉表示此时的Slave并未与Master建立起联系

建立链接按照如下配置

16、安装 Blue Ocean jenkins用户界面插件,Stage View Plugin阶段视图插件、Timestamp插件

17、安装jenkins工具链集成

17.1、jenkins与gitlab链接

#安装gitlab插件

 #连接配置

1、gitlab 上配置jenkins公钥 偏好设置->SSH密钥

1、用户密码配置,类型选 Username with password

2、ssh 免密配置-全局安全配置-Git Host Key Verification Configuration,并将Host Key Verification Strateg 改为No verification

 


3、jenkins创建密钥凭据,类型选择SSH Username with private key,gitlab 添加公钥,jenkins添加私钥

 

4、流水线项目创建

 17.2、webhook自动触发配置

1、gitlab配置webhook,使用root用户登录——>管理中心——>网络——>出站请求——>允许来自webhook和集成对本地网络的请求

 

 

2、推送测试
测试->推送事件


3、修改对应项目代码仓库,会自动触发流水线

4、jenkins 配置webhook

17.3、jenkins与maven集成

#二进制安装jdk17
wget https://builds.openlogic.com/downloadJDK/openlogic-openjdk/17.0.7+7/openlogic-openjdk-17.0.7+7-linux-x64.tar.gz {maven需要}
#解压文件
mkdir -p /usr/local/jdk
tar -zxvf openlogic-openjdk-17.0.7+7-linux-x64.tar.gz -C /usr/local/jdk
#配置环境变量
vim /etc/profile
#在文件末尾添加信息:
export JAVA_HOME=/usr/local/jdk/openlogic-openjdk-17.0.7+7-linux-x64
export CLASSPATH=$:CLASSPATH:$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin
#刷新配置
source /etc/profile
#在jenkins服务器上安装maven
官方下载地址:https://maven.apache.org/download.cgi
下载地址:wget https://dlcdn.apache.org/maven/maven-3/3.9.8/binaries/apache-maven-3.9.8-bin.tar.gz
mkdir -p /usr/local/maven
tar -zxf apache-maven-3.9.8-bin.tar.gz -C /usr/local/maven/ && cd /usr/local/maven/apache-maven-3.9.8/
#设置maven的阿里云镜像
vim conf/settings.xml
# 在159行的标签为</mirrors>前添加如下阿里云镜像
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
#配置环境变量
vim /etc/profile
# 文件末尾添加如下内容
export MAVEN_HOME=/usr/local/maven/apache-maven-3.9.8
export PATH=${MAVEN_HOME}/bin:${PATH}
#使其生效
source /etc/profile
#验证 mvn -v,输出如下提示成功

#全局工具配置关联jdk和maven

#添加jenkins全局变量
系统管理-系统配置
新增JAVA_HOME=/usr/local/jdk/openlogic-openjdk-17.0.7+7-linux-x64

M2_HOME=/usr/local/maven/apache-maven-3.9.8

PATH+EXTRA=$M2_HOME/bin

17.4、jenkins与K8S集成

1、Jenkins的插件管理中安装Kubernetes插件

如下插件【根据需要安装,不是必需】

Kubernetes CLI Plugin
Kubernetes Client API Plugin
Kubernetes Credentials Plugin
Kubernetes plugin

2、跨集群连接【jenkins 部署在K8S集群外】
配置思路
jenkins要想连接并操作k8s集群,需要配置授权,请求k8s集群的kube apiserver的请求,可以和kubectl一样利用config文件用作请求的鉴权,默认在~/.kube/config下,也可以单独严格指定权限细节,生成一个jenkins专用的config文件。
在jenkins中能够识别的证书文件为PKCS#12 certificate,因此需要先将kubeconfig文件中的证书转换生成PKCS#12格式的pfx证书文件
3、生成证书
我们可以使用yq命令行工具解析yaml,并提取相关的内容,然后通过base 64解码,最后生成文件
下载地址:wget https://github.com/mikefarah/yq/releases/download/v4.34.1/yq_linux_amd64.tar.gz
tar -zxvf yq_linux_amd64.tar.gz && mv yq_linux_amd64 /usr/bin/yq && yq --version
mkdir -p /home/jenkins-crt
certificate-authority-data——>base 64解码——>ca.crt
client-certificate-data——>base 64解码——>client.crt
client-key-data——>base 64解码——>client.key
yq e '.clusters[0].cluster.certificate-authority-data' config | base64 -d > /home/jenkins-crt/ca.crt
yq e '.users[0].user.client-certificate-data' config | base64 -d > /home/jenkins-crt/client.crt
yq e '.users[0].user.client-key-data' config | base64 -d > /home/jenkins-crt/client.key
4、转换证书【记住密码】xxxxx
openssl pkcs12 -export -out cert.pfx -inkey client.key -in client.crt -certfile ca.crt
5、导入证书
打开jenkins的web界面,系统管理——>Credentials——>添加全局凭据

凭据的类型选择Certificate,证书上传刚才生成的cert.pfx证书文件,输入通过openssl生成证书文件时输入的密码
6、配置远程k8s集群地址
jenkins——>系统管理——>Clouds——>New cloud——>输入cloud name并勾选类型为kubernetes填写cloud详细信息
Kubernetes地址:/root/.kube/config文件中cluster部分中server的内容
Kubernetes命名空间:/root/.kube/config文件中cluster部分中name的内容
Jenkins地址:jenkins服务的地址
kubernetes服务证书key:ca.crt内容
凭据:选择刚刚创建的Certificate凭据

7、验证,注意jenkins 要安装kubectl工具

17.5、jenkins与harbor仓库集成

1、在jenkins上安装docker

      略
      修改docker sock权限,允许jenkins调用
      chmod 666 /var/run/docker.sock
2、创建docker组【欧拉系统需要,并将jenkins 用户添加到docker组jenkins uid号要和docker组一致
      grouadd docker
      usermod -a -G docker jenkins
3、配置jenkins
安装Docker Pipeline和Version Number插件
因为要自动给镜像打上tag,所以这里涉及到tag的取名规则,我用了一个Version Number 的插件,它能够获取到当天的年,月,日数据,我可以利用它来为tag进行取名

为Harbor添加凭证

17.6、jenkins与SonarQube集成

进入Jenkins的系统管理->插件管理->可选插件,搜索框输入sonarqube,安装重启

 1、启用sonarqube

jenkins的系统管理->系统配置,添加sonarqube服务

 2、sonarqube配置,禁用审查结果上传到SCM功能

 3、生成token

 4、jenkins配置,添加令牌,类型切换成Secret text,粘贴token,点击添加,并保存

 5、sonarqube scanner 安装,进入Jenkins的系统管理->全局工具配置,下滑找到图片里的地方,点击新增SonarQube Scanner,我们选择自动安装并选择最新的版本

6、非流水线项目添加代码审查

analysis properties参数如下
# 项目名称id,全局唯一
sonar.projectKey=sprint_boot_demo
# 项目名称
sonar.projectName=sprint_boot_demo
sonar.projectVersion=1.0
# 扫描路径,当前项目根目录
sonar.sources=./src
# 排除目录
sonar.exclusions=**/test/**,**/target/**
# jdk版本
sonar.java.source=1.17
sonar.java.target=1.17
# 字符编码
sonar.sourceEncoding=UTF-8
# binaries路径
sonar.java.binaries=target/classes

7、构建并查看结果

17.7、安装jenkins构建通知插件Lark Notice

1、参考:https://721806280.github.io/lark-notice-plugin-doc/guide/QUICK-START.html 

2、下载地址:https://gitee.com/xm721806280/lark-notice-plugin/releases/download/v2.0.0/lark-notice.hpi【文件上传的方式安装】

系统管理->插件管理->Advanced settings

posted on 2024-07-15 09:44  MhaiM  阅读(66)  评论(0编辑  收藏  举报