一、为什么要使用Linux宿主机安装Jenkins,而不是Docker安装?
二、开始安装:
1、安装jdk,因为Jenkins是Java实现的——我已经安装好
2、添加Jenkins下载库到yum源:
官方文档地址:https://www.jenkins.io/doc/book/installing/linux/
wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key yum install -y jenkins
2023年版(建议jdk11):
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 upgrade -y yum install jenkins -y systemctl daemon-reload
通过清华源安装指定版本的Jenkins:
yum install -y https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/jenkins-2.354-1.1.noarch.rpm yum install -y https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/jenkins-2.244-1.1.noarch.rpm
3、如果要配置端口或默认用户,就修改这个文件:
vi /etc/sysconfig/jenkins ## JENKINS_PORT :启动端口 ## JENKINS_USER :"root" ## JENKINS_HOME="/data/jenkins"
如果我们把默认用户修改为root,则还需要修改对应的几个文件夹权限
chown -R root:root /data/jenkins chown -R root:root /var/cache/jenkins chown -R root:root /var/log/jenkins
(当然我们也可以修改Jenkins的对应HOME目录,因为Jenkins工作目录以后可能很大,也是最重要的一个目录,所以我们可以改到我们需要的位置)
4、还要记得把Jenkins的java命令位置添加上:
vi /etc/init.d/jenkins
如图:

5、启动jenkins:
systemctl enable jenkins systemctl start jenkins systemctl status jenkins

6、在新版中如果systemctl启动失败,还需要修改jenkins.service服务中的用户信息:
[root@jiguiquan ~]# vim /usr/lib/systemd/system/jenkins.service User=root Group=root
三、2023年安装新版JENKINS并修改JENKINS_HOME:
1、通过清华源安装指定版本的Jenkins:
yum install -y https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/jenkins-2.390-1.1.noarch.rpm yum install -y https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/jenkins-2.360-1.1.noarch.rpm
2、修改配置文件 /etc/sysconfig/jenkins:
[root@jiguiquan ~]# vim /etc/sysconfig/jenkins ## JENKINS_PORT :启动端口 ## JENKINS_USER :"root"
3、修改新版服务的启动用户:
[root@jiguiquan ~]# vim /usr/lib/systemd/system/jenkins.service User=root Group=root
4、修改/etc/init.d/jenkins 中的java位置:
// 把我们的java命令放在最上面 [root@jiguiquan ~]# vim /etc/init.d/jenkins candidates=" /usr/local/jdk11/bin/java /etc/alternatives/java /usr/lib/jvm/java-1.8.0/bin/java /usr/lib/jvm/jre-1.8.0/bin/java /usr/lib/jvm/java-11.0/bin/java /usr/lib/jvm/jre-11.0/bin/java /usr/lib/jvm/java-11-openjdk-amd64 /usr/bin/java "
5、配置几个核心文件夹的访问权限:
chown -R root:root /var/lib/jenkins chown -R root:root /var/cache/jenkins chown -R root:root /var/log/jenkins
6、启动Jenkins并设置开机自启:
systemctl enable jenkins systemctl start jenkins systemctl status jenkins
7、为了插件安装速度,可以修改清华源:
[root@i-jiguiquan jenkins]# vim /var/lib/jenkins/hudson.model.UpdateCenter.xml <?xml version='1.1' encoding='UTF-8'?> <sites> <site> <id>default</id> <url>https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json</url> </site> </sites>
三、使用初始化、安装blueocean
1、获取初始化密钥

2、直接安装推荐插件(省事)

然后就是创建第一个用户admin:admin
3、给Jenkins安装 blueocean 插件(管理Jenkins ——> 插件管理)

安装完,重启jenkins服务生效!
三、配置JDK+MAVEN环境
1、在系统管理 ——> 全局工具配置中,配置JDK + MAVEN的位置:


2、在系统管理 ——> 系统配置中,配置JDK + MAVEN的环境变量:

如果我们还想在Jenkins中使用node,npm,yarn等命令,也可以将node的bin目录配置在此处的PATH变量中即可!
3、然后就可以生效啦:

补充、可能遇到的问题解决:
1、字体问题:

不要被他的第一行报错所迷惑,所有的报错第一行都是这个,要看内部具体报错内容:
如果是Font字体问题,那么我们就在Linux上面安装字体即可解决:
yum install fontconfig
之后重启服务!
补充一:Jenkins服务的重启:
1、以admin身份登录;
2、访问链接:
http://10.206.73.154:8080/restart

然后确认,等待即可!
补充二、我的Maven配置,供参考:
<?xml version="1.0" encoding="UTF-8"?> <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> <localRepository>/var/maven/.m2</localRepository> <pluginGroups> </pluginGroups> <proxies> </proxies> <servers> <server> <id>registry.cn-hangzhou.aliyuncs.com</id> <username>18652907029</username> <password>********</password> </server> <server> <id>10.206.73.155</id> <username>admin</username> <password>********</password> </server> </servers> <mirrors> <mirror> <id>nexus-aliyun</id> <mirrorOf>central</mirrorOf> <name>Nexus Aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> </mirror> </mirrors> <profiles> </profiles> </settings>
补充三:Jenkins如何向外部机器发送文件
1、借助Publish Over SSH插件完成,安装插件:

2、在系统管理系统配置中,添加一个SSH Server:

3、语法生成器中使用sshPublisher生成JenkinsFile语法:
sshPublisher(publishers: [sshPublisherDesc(configName: 'k8s-test', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: '', sourceFiles: 'pipeline.yml')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
补充四、如果在Jenkins最后一步,触发K8s发版:
在JenkinsFile最后一步增加ssh执行命令:
ssh root@10.206.73.136 kubectl rollout restart deployment jiguiquan-nginx -n iotplat
相当于使用ssh执行远程命令,原理很简单!
补充五、如何使用Jenkins + gitlab的 webhook 完成CI
1、创建一个新的用户:
系统管理 ——> 管理用户 ——> 新增用户

2、当前用户至少登录一次,然后设置添加API Token:

保存好,只会显示一次!
3、找到对应的项目,配置“触发远程构建”:

# 最终拼接好的webhook钩子为: http://jiguiquan:11366983b539496b85f40647b29a0d2910@10.206.73.154:8080/job/login-center/build?token=jiguiquan
4、设置 gitlab 允许内部地址不受信的钩子:
当gitlab添加钩子时,如果不允许“http://ip:端口”这样的钩子,那么我们就得以root账户登陆后,修改全局配置:

然后去对应的项目上添加Web Hook钩子即可啦!



