背景
为了提高项目构建效率,决定在打包机上安装 Jenkins管理构建流程。遇到一些问题,做此纪录以防备忘。
安装
- 参考官网流程,官方教程
- 本次安装的是LTS版本
#1.下载 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.key sudo yum upgrade # Add required dependencies for the jenkins package # 依赖于JDK11 sudo yum install java-11-openjdk sudo yum install jenkins sudo systemctl daemon-reload
遇到的问题
- 问题:安全验证已过期 Issued certificate has expired
解决:按提示使用--no-check-certificate[admin@localhost ~]$sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo --2022-12-03 08:06:10-- https://pkg.jenkins.io/redhat/jenkins.repo Resolving pkg.jenkins.io (pkg.jenkins.io)... 151.101.2.133, 151.101.66.133, 151.101.130.133, ... Connecting to pkg.jenkins.io (pkg.jenkins.io)|151.101.2.133|:443... connected. ERROR: cannot verify pkg.jenkins.io's certificate, issued by ‘/C=US/O=Let's Encrypt/CN=R3’: Issued certificate has expired. To connect to pkg.jenkins.io insecurely, use `--no-check-certificate'.
- 问题:Jenkins启动时无权限访问目录。
原因:可以通过ps -ef | grep jenkins。默认是以jenkins用户与jenkins组运行。使用root权限 运行jenkins即可。
解决:- 修改jenkins配置文件 vi /etc/sysconfig/jenkins,将JENKINS_USER改为root
## Type: string ## Default: "jenkins" ## ServiceRestart: jenkins # # Unix user account that runs the Jenkins daemon # Be careful when you change this, as you need to update # permissions of $JENKINS_HOME and /var/log/jenkins, # and if you have already run Jenkins, potentially other # directories such as /var/cache/jenkins . # JENKINS_USER="root"
- 由于是使用systemctl start jenkins进行启动服务,所有启动文件也需要修改为root用户。通过服务状态查到/usr/lib/systemd/system/jenkins.service
[admin@localhost ~]$sudo systemctl status jenkins ● jenkins.service - Jenkins Continuous Integration Server Loaded: loaded (/usr/lib/systemd/system/jenkins.service; disabled; vendor preset: disabled) Active: active (running) since Fri 2022-12-02 09:44:10 CST; 22h ago Main PID: 32724 (java) Tasks: 57 Memory: 4.0G CGroup: /system.slice/jenkins.service └─32724 /usr/lib/jvm/java-11-openjdk-11.0.17.0.8-2.el7_9.x86_64/bin/java -Djava.awt.headless=true -jar /usr/share/java/jenkins.war --webroot=%C/jenkins/war --httpPort=1...
- 修改服务启动为root用户权限
# Unix account that runs the Jenkins daemon # Be careful when you change this, as you need to update the permissions of # $JENKINS_HOME, $JENKINS_LOG, and (if you have already run Jenkins) # $JENKINS_WEBROOT. User=root Group=root
- 同时需要修改jenkins运行时依赖的文件
sudo chown -R root:root /var/log/jenkins/ sudo chown -R root:root /var/lib/jenkins/ sudo chown -R root:root /var/cache/jenkins/
- 修改jenkins配置文件 vi /etc/sysconfig/jenkins,将JENKINS_USER改为root
- 问题:Invalid JDK Version,JDK版本不对,最新版本jenkins支持JDK 11起,系统旧的版本不支持。
解决:jenkins配置文件/etc/init.d/jenkins添加JDK版本,修改启动环境变量/usr/lib/systemd/system/jenkins.service#1.修改 /etc/init.d/jenkins. 在candidates字段加中JDK11的安装路径 # Search usable Java as /usr/bin/java might not point to minimal version required by Jenkins. # see http://www.nabble.com/guinea-pigs-wanted-----Hudson-RPM-for-RedHat-Linux-td25673707.html candidates=" /usr/lib/jvm/java-11-openjdk-11.0.17.0.8-2.el7_9.x86_64/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 " #2.配置启动service文件/usr/lib/systemd/system/jenkins.service,修改环境变量以JDK11启动 # The Java home directory. When left empty, JENKINS_JAVA_CMD and PATH are consulted. Environment="JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.17.0.8-2.el7_9.x86_64" # The Java executable. When left empty, JAVA_HOME and PATH are consulted. Environment="JENKINS_JAVA_CMD=/usr/lib/jvm/java-11-openjdk-11.0.17.0.8-2.el7_9.x86_64/bin/java"