在Centos7上安装的Jenkins 2.303.1
命令行安装为服务
因为新版本的Jenkins的war是用java -jar启动, 并且无法后台运行, 所以要么通过screen创建一个session来运行war, 要么就直接按官网的步骤安装为服务. 下面是安装为服务的步骤:
yum install wget
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
yum upgrade
yum install epel-release java-11-openjdk-devel
yum install jenkins
systemctl status jenkins
systemctl is-enabled jenkins
浏览器访问后, 用提示文件的管理员密码登录, 选择默认的插件安装
这样安装的Jenkins, 会创建一个jenkins用户,
[root@vm_00 ~]# more /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
...
jenkins:x:997:994:Jenkins Automation Server:/var/lib/jenkins:/bin/false
可以看到对应的工作目录在 /var/lib/jenkins
在Jenkins中创建的项目目录, 就在 /var/lib/jenkins/jobs
在构建中需要用到的settings.xml, 可以新建 /var/lib/jenkins/settings 目录, 放到这个目录下
用war安装,以screen启动
# 安装git
yum install git
# 添加tomcat用户
useradd tomcat
passwd tomcat
# 安装JDK
cd backup/
tar xvf jdk-11.0.8_linux-x64_bin.tar.gz
tar xvf jdk-8u261-linux-x64.tar.gz
cd /opt/
mkdir jdk
cd jdk/
mv ~/backup/jdk1.8.0_261 .
mv ~/backup/jdk-11.0.8 .
ln -s jdk-11.0.8 latest
vi /etc/profile.d/sh.local
## 增加内容开始
PATH=$PATH:/opt/jdk/latest/bin
## 增加内容结束
# 将jenkins war放入 /home/tomcat/run目录后
vi scripts/start_jenkins.sh
## 内容开始
java -server -Djava.awt.headless=true -jar /home/tomcat/run/jenkins.2.277.2.war --httpPort=9090
## 内容结束
# 因为jenkins的war只能使用前台启动, 搜索到的解决方案都是用 nohup java -jar jenkins.war &, 但是这样会导致日志堆积, 估采用screen
screen -S jenkins
# 在screen session里
./scripts/start_jenkins.sh
问题和解决
启动Jenkins报NPE错误
通过安装fontconfig解决
https://github.com/AdoptOpenJDK/openjdk-docker/issues/75
yum install fontconfig
SSH Agent 出现 Host key verification failed
首先确认
- Jenkins的Git使用的ssh, 不需要预先记录known_hosts, 配置好就可以直接用
- SSH Agent必须要先在命令行下访问一下对方IP, 记录了known_hosts后, 才能正常使用
因为安装为服务的Jenkins使用的是jenkins用户, 而且是/bin/false的用户, 不能像普通用户那样登录然后ssh一下对方IP, 你需要按以下方式处理
# 以root或sudo user身份, 切换到jenkins用户
su -s /bin/bash jenkins
# 前往jenkins的home目录
cd /var/lib/jenkins/
# 查看.ssh下是否已经有known_hosts, 有的话, 是什么内容, 正常情况下, 这时候是没有对应IP记录的
cd .ssh/
more known_hosts
# 访问一下对应IP, 记录公钥
ssh 192.168.123.123
# 再次查看, 应该就有记录了
more known_hosts
在上面的操作之后, 再执行任务, SSH Agent就不会报Host key verification failed错误了.