环境说明

  • 操作系统: CentOS Linux release 7.9.2009 (Core)
  • jdk 使用说明: openjdk 1.8.0_282
  • jenkins 版本: 最新 长期支持版本

Jenkins 安装

这里 Jenkins 的安装方式为使用 yum 包管理进行安装,文档参考

安装 jdk

1
2
3
4
5
6
yum install -y java-1.8.0-openjdk

[root@jira ~]# java -version
openjdk version "1.8.0_282"
OpenJDK Runtime Environment (build 1.8.0_282-b08)
OpenJDK 64-Bit Server VM (build 25.282-b08, mixed mode)

配置 Jenkins yum 源

1
2
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 安装

1
2
3
4
yum install jenkins -y

systemctl start jenkins \
&& systemctl enable jenkins   # 设置服务开机自启

安装完成后更具引导进行初始即可,选填为 安装推荐的插件

Jenkins 可选优化配置

修改端口号

Jenkins 服务默认监听在机器上的 8080 端口上如机器中出现端口号冲突,此时我们就需要相应的修改一下对应的端口号了。

首先找到对应的配置文件

image-20210302194914456

1
2
3
sed -i "s#8080#18080#g" /etc/sysconfig/jenkins  # 执行将端口替换为 18080端口

service jenkins restart # 重启服务

image-20210302195118303

配置代理使用域名形式访问

安装 nginx

1
yum install -y nginx

nginx 添加虚拟主机

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
vi /etc/nginx/nginx.conf  # 添加下面配置
http {
...
  server {
        listen 80;
        server_name jenkins.treesir.pub;
        charset    utf-8;
        location / {
              proxy_pass       http://127.0.0.1:18080;
              proxy_redirect    off;
              proxy_set_header  Host $http_host;
              proxy_set_header  X-Real-IP  $remote_addr;
              proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
           }
  }
}

nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

启动 nginx 并设置 开机自启

1
2
systemctl start nginx \
&& systemctl enable nginx 

测试访问

如果没有域名,可在 hosts 文件中添加记录

image-20210302203954015

此时应该页面会提示,反向代理 错误提示,解决方法如下:

manage jenkins => configure system => 修改 Jenkins URL 为此时 nginx 代理的地址,即演示中的 http://jenkins.treesir.pub => 保存后错误提示就会 消失

修改插件更新站点为国内镜像站点

进入Jenkisn工作目录, 一般为 /var/lib/jenkins /var/jenkins_home, 使用 Yum 安装时工作目录为 /var/lib/jenkins

1
2
3
4
5
6
# 进入Jenkisn工作目录, 一般为 /var/lib/jenkins 或 /var/jenkins_home
jenkins_home=/var/lib/jenkins

sed -i.bak 's#https://updates.jenkins.io#https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates#g' "${jenkins_home}"/hudson.model.UpdateCenter.xml
sed -i.bak 's/http:\/\/updates.jenkins-ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' "${jenkins_home}"/updates/default.json 
sed -i.bak 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' "${jenkins_home}"/updates/default.json

Jenkins => 插件管理 => 高级 => 升级站点 url 替换为清华源: https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

image-20210302201455084

使用 容器化部署 时,添加下面的环境变量即可

1
2
3
JENKINS_UC=https://mirrors.tuna.tsinghua.edu.cn
JENKINS_UC_DOWNLOAD=https://mirrors.tuna.tsinghua.edu.cn/jenkins
JENKINS_OPTS="-Djava.awt.headless=true -Duser.timezone=Asia/Shanghai -Dhudson.model.UpdateCenter.updateCenterUrl=https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json"

更新 Jenkins 的版本

右击,选择复制链接即获取到:https://updates.jenkins.io/download/war/2.281/jenkins.war

image-20210302201751849

1
2
3
4
5
6
7
8
9
cd /usr/lib/jenkins/ 

\mv jenkins.war{,.bak} # 执行备份,如更新后版本存在问题时,可以进行回滚。

wget https://updates.jenkins.io/download/war/2.281/jenkins.war # 粘贴刚才复制到的链接, 如果速度很慢的话可以修改为 国内的阿里云地址

# wget https://mirrors.aliyun.com/jenkins/war/2.281/jenkins.war

service jenkins restart  # war 包下载完成后,执行一下重启。

常用的插件整理

下面的插件列表为我自己在 生产实践 中,使用到的一些插件整理,不一定适用于你们的环境,请更具情况选择。。

插件名称 插件说明
Kubernetes plugin kubernetes 容器云插件,可以使用动态 agent 功能
LDAP Plugin 使用与 ldap 服务,进行认证的插件
Green Balls Pipeline 构建成功状态默认为灰蓝色,使用此插件后可将插件替换为绿色
Rebuilder 流水线重构插件,同时会使用 上一次的构建参数
Gitlab Authentication 与 Gitlab 认证进行集成,使用Gitlab中的用户进行登录
SonarQube Scanner 与 Sonarqube 代码质检集成插件
Build Monitor View 构建状态视图
Blue Ocean 重构版的主题插件
Periodic Backup 版本备份插件
Generic Webhook Trigger Plugin 通用 webhook 触发器 (功能强大)
Simple Theme Plugin 主题添加自定义的 css & js
DingTalk 消息通知与钉钉机器人集成插件
HTTP Request Plugin http 请求插件,与其他应用的 api 集成时 常用
Locale plugin 控制 Jenkins 的地区语言
Localization: Chinese (Simplified) 简体中文语言包
Pipeline Utility Steps Jenkins 扩展工具
Role-based Authorization Strategy 基于角色的权限管理
AnsiColor 字体输出带颜色
build user vars plugin 获取此次触发构建的用户及邮件地址信息
Git Parameter Git 自选 分支 & tag 参数化构建插件
Timestamper 使步骤输出 带有时间戳

进阶配置

关联 openLdap

此操作需安装 LDAP Plugin 插件 及事先准备好 openLdap,ldap 结构及管理步骤如下所示:

image-20210303100044191

Manage Jenkins => Configure Global Security => LDAP

Server: ldap://192.168.8.112:54453

root DN: dc=ldap,dc=devops

User search filter: uid={0}

Search for LDAP groups containing user (选择) : ou=users,dc=ldap,dc=devops

Manager DN: cn=admin,dc=ldap,dc=devops

Manager Password: pass

Display Name LDAP attribute: displayname

Email Address LDAP attribute: mail

注销后使用 LDAP 用户测试登录

image-20210303100342139

基于角色的权限管理

此操作需安装 Role-based Authorization Strategy 插件

步骤一

Manage Jenkins => Configure Global Security => Authorization => Role-Based Strategy

如开启参数后提示警告,选择忽略即可。

image-20210303102611821

步骤二

权限管理

创建只读用户

Manage Jenkins => Manage and Assign Roles => Manage Roles => Role to add

添加后保存image-20210303103022143

优化默认主题

此处优化主题实现方式为使用 jenkins-material-theme 为默认的主题添加 css 样式文件

安装 Simple Theme Plugin 插件后, 并在jenkins-material-theme 控制台中生成了自定义的 css

Manage Jenkins => Configure System => Theme elements add => Extra CSS => 粘贴生成的 css

image-20210303104809646

image-20210303105432114