目录。
零,环境介绍。
一、安装Jenkins
1、安装和更换插件源。
2、修改jenkins时区
sdkman安装༈可选)
1、常用的sdkman方法
2、常用的sdkman演示方法
2.1、查看可用的jdk。
2.2、下载jdk并切换版本
三、jenkins报错解决方案。
1、systemctl下载sdkman后启动失败
2、 其它可能的错误报告。
2.1、端口占用问题
2.2、用户名问题
2.3、版本兼容性问题
2.4、 防火墙问题
2.5、权限问题。
Operating System。 | openEuler 22.03 (LTS-SP2)。 |
Kernel。 | Linux 5.10.0-153.12.0.92.oe2203sp2.x86_64。 |
ip address。 | 192.168.240.11。 |
JDK version。 | jdk-17。 |
jenkins version。 | 2.479.3-1.1. |
安装前先调整防火墙:
jenkins官网提供的防火墙策略:
YOURPORT=8080PERM="--permanent"SERV="$PERM --service=jenkins"firewall-cmd $PERM --new-service=jenkinsfirewall-cmd $SERV --set-short="Jenkins ports"firewall-cmd $SERV --set-description="Jenkins port exceptions"firewall-cmd $SERV --add-port=$YOURPORT/tcpfirewall-cmd $PERM --add-service=jenkinsfirewall-cmd --zone=public --add-service=http --permanentfirewall-cmd --reload。
可以直接关掉防火墙:
sudo systemctl stop firewalldsudo systemctl disable firewalld。
根据官网参考文件安装。
Jenkins安装参考文件。
sudo wget -O /etc/yum.repos.d/jenkins.repo \ https://pkg.jenkins.io/redhat-stable/jenkins.reposudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.keysudo yum upgrade# Add required dependencies for the jenkins packagesudo yum install fontconfig java-17-openjdksudo yum install jenkinssudo systemctl daemon-reloadsudo systemctl start jenkinssudo systemctl enable jenkinssudo systemctl status jenkins。
如果安装顺利完成,执行systemctle status jenkins显示以下结果:
查看jenkins版本。
。
输入浏览器:http://192.168.240.11:8080。
管理员密码在红色提示文件中,填写自己的密码。
cat /var/lib/jenkins/secrets/initialAdminPassword。
安装推荐插件,如果太慢,也可以离线导入
等待安装完成。
依次点击Dashboard--> 系统管理--> 插件管理。
在底部填写国内jenkins插件源。
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json。
提交后,重启jenkins提示可更新的插件,更新这些插件最后显示。No updates available。。
依次点击Dashboard -->系统管理--> Script Console。
填写以下内容显示底部操作结果。Result: Asia/Shanghai。
System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone', 'Asia/Shanghai')。
。
官方下载sdk网站。
yum install -y tarcurl -s "https://get.sdkman.io" | bashsource "$HOME/.sdkman/bin/sdkman-init.sh"sdk version。
查看sdk版本检查是否下载:
官方使用sdkman指南。
以上是SDKMAN的基本使用命令,如果你想要更多的指令,可输入sdk help查看所有指令内容。
sdk list java。
下载java 17.0.14-zulu。
下载前先看Java二进制文件的路径。
which java。
[root@openEuler-1 ~]# which java。
/usr/bin/java。
查看这条路径的原因,因为安装了sdkman,切换jdk版本后,Java二进制文件的默认路径将改为。/root/.sdkman/candidates/java/current/bin/java。,稍后验证。
sdk install java 17.0.14-zulu。
查看jdk版本。
java -version。
[root@openEuler-1 ~]# java -version。
openjdk version "17.0.14" 2025-01-21 LTS。
OpenJDK Runtime Environment Zulu17.56+15-CA (build 17.0.14+7-LTS)。
OpenJDK 64-Bit Server VM 17.56Zulu#43;15-CA (build 17.0.14+7-LTS, mixed mode, sharing)。
第一次下载会自动切换现在我的机器jdk版本是17.0.11变为17.0.14。
我们刚刚切换了jdk版本,尽管JDK版本为17.0.11变为17.0.14,但同样是jdk-17,不应该出错。
尝试重新启动Jenkins&xf00c;发现没有错。
但是,有时编译安装jdk后,然后下载sdkman可能会出现以下错误:
关键提示:Unit jenkins.service not found。
这意味着jenkins服务单元没有找到,原因是systemctl启动时调用的jenkins.service文件/usr/lib/systemd/system目录,无法调用/etc/init.d下面的jenkins。因此,如果遇到服务模式,就不能启动jenkinsJenkins需要修改。.service适应:
vim /usr/lib/systemd/system/jenkins.service。
添加或删除注释并修改以下内容a;
Environment="JAVA_HOME=/root/.sdkman/candidates/java/current/bin/java"
事实上,添加的内容是,为我们修改的java二进制文件路径sdkman。
重载重启jenkins发现错误解决方案:
systemctl daemon-reloadsystemctl start jenkinssystemctl status jenkins。
查看/etc/sysconfig/jenkinsJENKINS_PORT="8080”或者/usr/lib/systemd/system/jenkins.serviceEnvironment="JENKINS_PORT=8080"
grep -i jenkins_port= /usr/lib/systemd/system/jenkins.serviceps -aux | grep 8080。
vim /usr/lib/systemd/system/jenkins.service。
把/usr/lib/systemd/system/jenkins.serviceEnvironment="JENKINS_PORT=8080"改为您目前linux空闲端口,然后重启jenkins。
systemctl daemon-reloadsystemctl start jenkins.servicesystemctl stop jenkins.servicesystemctl status jenkins.service。
查看/etc/sysconfig/jenkins或//usr/lib/systemd/system/jenkins.serviceJENKINS_USER="root",如果不是root,c;而是jenkins或其他将其改为root。或相反的操作。
vim /usr/lib/systemd/system/jenkins.serviceUser=rootGroup=rootsystemctl daemon-reloadsystemctl start jenkins.servicesystemctl stop jenkins.servicesystemctl status jenkins.service。
检查当前jdk版本是否对应jenkins版,如果不符合兼容性,则将jdk切换到相应的版本。如何选择jdk版本或jenkins版本参考jenkins官方文档:
Java Support Policy。
文章开头已经说过,若8080端口开始放行c;你后来又改成了其他端口,配置相应的防火墙策略。
使用jenkins用户和jenkins组的身份启动jenkins服务,由于jenkins用户权限低,无法阅读相关文件,可能会导致启动失败,我们可以为jenkins用户提权。
echo "jenkins ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoerssudo chown -R jenkins:jenkins /var/lib/jenkinssudo chown jenkins:jenkins /usr/share/java/jenkins.war。
不同版本的路径可能不同,find可以用来找到。