一、安装

本文安装环境是在 Linux CentOS 镜像下 7.7 版本安装的 Jenkins

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
    yum install jenkins

2.配置 Jenkins

vim /etc/sysconfig/jenkins
   #监听端口
   JENKINS_PORT="88"
   默认 Jenkins 的端口号是 8080,8080 端口会在安装 Apache 的时候会出现端口冲突,还有安装 GitLab 的时候也会出现端口冲突的问题,后续文章会介绍如何安装 GitLab

3.配置 root 权限(重要)

博主试过使用 jenkins 用户进行访问会在 /var/log/jenkins/jenkins.log 下看到无权限的 error

为了不因为权限出现各种问题,这里直接使用 root

vim /etc/sysconfig/jenkins

   #修改配置
   $JENKINS_USER="root"
修改目录权限
 chown -R root:root /var/lib/jenkins
     chown -R root:root /var/cache/jenkins
     chown -R root:root /var/log/jenkins

重启

service jenkins restart
    ps -ef | grep jenkins

启动时会出现如下错误:

错误1:Restarting jenkins (via systemctl):  Job for jenkins.service failed because the control process exited with error code.

解决方案如下:

增加 jdk 的配置,填写本地的 jdk 安装目录,查询本地的 jdk 所在目录:which java        (Linux jdk 安装教程会在后续文章给出)

vim /etc/rc.d/init.d/jenkins

alt
alt

错误2:Restarting jenkins (via systemctl):  Warning: jenkins.service changed on disk. Run 'systemctl daemon-reload' to reload units.

解决方案:执行命令  systemctl daemon-reload

再次启动即可成功:  重启命令>service jenkins restart

4.访问 web 页面进行配置

alt

解锁 Jenkins

alt

执行命令查看秘钥:

cat /var/lib/jenkins/secrets/initialAdminPassword

插件安装选择推荐插件,插件安装完成以后将会创建管理员账户

点击保存完成,就可以使用 Jenkins 了.

错误一

使用 Jenkins 过程时会出现错误如下:

HTTP ERROR 403 No valid crumb was included in the

解决方案如下:

在  /etc/sysconfig/jenkins 文件下,找到 JENKINS_JAVA_OPTIONS

JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true"

错误二:

Jenkins 首次启动卡在启动界面:

解决方案如下:

在 /var/lib/jenkins/hudson.model.UpdateCenter.xml 文件下,你需要修改下配置文件,因为你所在网络被限制了。
需要你进入 jenkins 的工作目录,打开 hudson.model.UpdateCenter.xml
把 http://updates.jenkins-ci.org/update-center.json 改成 http://mirror.xmission.com/jenkins/updates/update-center.json

错误三:

错误二如果还是没有解决的话,尝试修改 /var/lib/jenkins/updates/default.json 中修改第一行的访问网址:

http://www.google.com/  改为 http://www.baidu.com/

错误四:

Jenkins 配置域名后报 from accessing a cross-origin frame 可能是出现了 Jenkins 的跨域问题,同时也为了防止是 Nginx 那边的错误,Nginx 和 Jenkins 同时都配置跨域:

alt
alt

#静态资源直接访问 Nginx
location / {
    add_header Access-Control-Allow-Origin *;
    add_header Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept";
    add_header Access-Control-Allow-Methods "GET, POST, OPTIONS";
    proxy_pass          http://localhost:8080;
    proxy_read_timeout  90s;
}
如果上面的配置无法解决错误的话,可能是下面的错误问题出现了
Jenkins 原因分析:X-Frame-Options惹得祸
X-Frame-Options HTTP 响应头是用来给浏览器指示允许一个页面可否在 <frame>, <iframe> 或者 <object> 中展现的标记。
网站可以使用此功能,来确保自己网站的内容没有被嵌到别人的网站中去,也从而避免了点击劫持 (clickjacking) 的攻击。

使用 X-Frame-OptionsEDIT
X-Frame-Options 有三个值:

DENY
表示该页面不允许在 frame 中展示,即便是在相同域名的页面中嵌套也不允许。
SAMEORIGIN
表示该页面可以在相同域名页面的 frame 中展示。
ALLOW-FROM uri
表示该页面可以在指定来源的 frame 中展示。
换一句话说,如果设置为 DENY,不光在别人的网站 frame 嵌入时会无法加载,在同域名页面中同样会无法加载。
另一方面,如果设置为 SAMEORIGIN,那么页面就可以在同域名页面的 frame 中嵌套。

先在 Jenkins 中安装 X-Frame-OptionsEDIT 插件,然后重新启动,修改如下配置即可:

二、卸载

卸载 yum 方式安装的 Jenkins (默认安装主目录是在 /var/lib/jenkins/)

service jenkins stop

yum clean all

yum -y remove jenkins

find / -iname jenkins | xargs -n 1000 rm -rf

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐