目錄
零、環境介紹
一、Jenkins安裝
1、插件安裝以及更換插件源
?2、修改jenkins時區
二、sdkman安裝(可選)
1、sdkman常用方法
2、sdkman常用方法演示
2.1、查看可用的jdk
2.2、下載jdk并切換版本
三、jenkins報錯解決
1、下載sdkman后systemctl啟動失敗
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=8080
PERM="--permanent"
SERV="$PERM --service=jenkins"firewall-cmd $PERM --new-service=jenkins
firewall-cmd $SERV --set-short="Jenkins ports"
firewall-cmd $SERV --set-description="Jenkins port exceptions"
firewall-cmd $SERV --add-port=$YOURPORT/tcp
firewall-cmd $PERM --add-service=jenkins
firewall-cmd --zone=public --add-service=http --permanent
firewall-cmd --reload
嫌麻煩直接關掉防火墻也行:
sudo systemctl stop firewalld
sudo systemctl disable firewalld
一、Jenkins安裝
按照官網的參考文檔安裝即可
Jenkins安裝參考文檔
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
sudo systemctl start jenkins
sudo systemctl enable jenkins
sudo systemctl status jenkins
順利安裝完成的話,執行systemctl status?jenkins顯示以下結果:
查看jenkins版本
?
?在瀏覽器輸入:http://192.168.240.11:8080
?管理員密碼在紅色的提示文件當中,填入你自己的密碼
cat /var/lib/jenkins/secrets/initialAdminPassword
?安裝推薦的插件,如果嫌慢也可以離線導入。
等待安裝完成。
1、插件安裝以及更換插件源
依次點擊Dashboard-->?系統管理--> 插件管理
在底部填寫國內的jenkins插件源
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
?提交后重啟jenkins,會提示有可更新的插件,將這些插件更新,最后顯示No updates available。
?2、修改jenkins時區
?依次點擊Dashboard -->系統管理-->?Script Console
?填入以下內容,底部運行結果顯示Result: Asia/Shanghai
System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone', 'Asia/Shanghai')
?
二、sdkman安裝(可選)
sdk官方下載網址
yum install -y tar
curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
sdk version
查看sdk版本,檢驗是否下載完畢:
1、sdkman常用方法
sdkman官方使用指南
- 查看SKDMAN版本號: sdk version
- 列出可用的SDK列表: sdk list
- 安裝特定的SDK: sdk install <sdk-name> <version>,例如,安裝Java 8: sdk install java 8.0.292.hs-adpt
- 切換SDK版本: sdk use <sdk-name> <version>,例如,切換到Java 9: sdk use java 9.0.7-zulu
- 設置默認的SDK版本: sdk default <sdk-name> <version>,例如,設置Java 8為默認版本: sdk default java 8.0.292.hs-adpt
- 卸載SDK: sdk uninstall <sdk-name> <version>,例如,卸載Java 9: sdk uninstall java 9.0.7-zulu
- 更新SDKMAN: sdk upgrade
- 清除舊版本的SDK: sdk flush archives sdk flush temp
以上為SDKMAN的基本使用命令,如果想要更多指令,可以輸入sdk help來查看全部的指令內容。
2、sdkman常用方法演示
2.1、查看可用的jdk
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,稍后驗證。
2.2、下載jdk并切換版本
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 Zulu17.56+15-CA (build 17.0.14+7-LTS, mixed mode, sharing)
初次下載會自動切換,現在我的機器jdk版本由17.0.11變為17.0.14
三、jenkins報錯解決
1、下載sdkman后systemctl啟動失敗
我們剛才切換了jdk版本后,雖然jdk版本由17.0.11變為17.0.14,但是同為jdk-17,應該不會出錯
嘗試重啟Jenkins,發現的確沒有出錯。
但是,有時編譯安裝jdk后,再下載sdkman,可能會有如下報錯:
關鍵提示:Unit jenkins.service not found
?意思是jenkins服務單元沒有找到,原因是因為systemctl啟動時調用的jenkins.service文件在/usr/lib/systemd/system目錄下,無法調用/etc/init.d/下的jenkins。所以如果遇到服務方式無法啟動jenkins,則需要修改jenkins.service來進行適配:
vim /usr/lib/systemd/system/jenkins.service
添加或者去掉注釋修改以下內容:
Environment="JAVA_HOME=/root/.sdkman/candidates/java/current/bin/java"
?添加的內容其實就是,sdkman給我們修改的java二進制文件路徑
重載并重啟jenkins發現錯誤解決了:
systemctl daemon-reload
systemctl start jenkins
systemctl status jenkins
2、 其他可能的報錯
2.1、端口占用問題
查看/etc/sysconfig/jenkins的JENKINS_PORT="8080”或者/usr/lib/systemd/system/jenkins.service的Environment="JENKINS_PORT=8080"
grep -i jenkins_port= /usr/lib/systemd/system/jenkins.service
ps -aux | grep 8080
vim /usr/lib/systemd/system/jenkins.service
把/usr/lib/systemd/system/jenkins.service的Environment="JENKINS_PORT=8080"改為你當前linux空閑的端口,然后重啟jenkins
systemctl daemon-reload
systemctl start jenkins.service
systemctl stop jenkins.service
systemctl status jenkins.service
2.2、用戶名問題
?查看/etc/sysconfig/jenkins或者/usr/lib/systemd/system/jenkins.service的JENKINS_USER="root",如果不是root,而是jenkins或者其它,要改成root。或者相反操作。
vim /usr/lib/systemd/system/jenkins.service
User=root
Group=root
systemctl daemon-reload
systemctl start jenkins.service
systemctl stop jenkins.service
systemctl status jenkins.service
2.3、版本兼容性問題
檢查當前的jdk版本是否對應jenkins版本,不符合兼容性就切換jdk到對應版本。如何選擇jdk版本或者jenkins版本參考jenkins官方文檔:
Java Support Policy
2.4、 防火墻問題
文章開頭已經講過了,如果開始放行的是8080端口,你后面又改為了其他端口,自己配置對應的防火墻策略即可。
2.5、權限問題
如果使用jenkins用戶和jenkins組的身份來啟動jenkins服務,有可能因為jenkins用戶的權限低而不能讀取有關文件而導致啟動失敗,我們給jenkins用戶提權即可。
echo "jenkins ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
sudo chown -R jenkins:jenkins /var/lib/jenkins
sudo chown jenkins:jenkins /usr/share/java/jenkins.war
不同版本的路徑可能不同,可以使用find找出。