13.CICD与Jenkins_01_环境搭建
通过网盘分享的文件:MD文档笔记
链接: https://pan.baidu.com/s/1ao2wfyLEdN50YmIqdzfGYQ?pwd=5w5z 提取码: 5w5z
–来自百度网盘超级会员v6的分享
一.CI/CD 与 DevOps
1.CI/CD 简介

-
CI
Continuous Integration持续集成
即将持续不断更新的代码经构建、测试后也持续不断的集成到项目主干分支
-
CD包
含两层含义
-
Continuous Delivery持续交付
是持续集成的后续步骤
持续频繁地将软件的新版本交付到类生产环境预发
即交付给测试、产品部门进行集成测试、API 测试等验收,确保交付的产物可直接部署
-
Continuous Deployment持续部署
是持续交付的后续步骤,将持续交付的产物部署到生产环境
-
2.DevOps 简介

百度百科中是这样介绍 DevOps 的
DevOps是一组过程、方法与系统的统称,用于促进开发、技术运营和质量保障(QA)部门之间的沟通、协作与整合
它是一种重视软件开发人员(Dev)和IT 运维技术人员(Ops)之间沟通合作的 文化、运动或惯例
透过自动化软件交付和架构变更的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠
DevOps 是一种思想、是一种管理模式、是一种执行规范与标准
3.CI/CD 与 DevOps 关系
-
CI/CD 是目标
-
DevOps 为 CI/CD 目标的实现提供了前提与保障
二.系统搭建
-
系统架构图
最终要搭建出如下图所示架构的系统

-
平台登录页面
-
GitLab-9999-root

-
Jenkins-8080-admin

-
SonarQube-9000-admin

-
harbor-80-admin

-
1.IDEA中Git配置
1.1.Git 简介
百度百科中是这样介绍Git 的
Git是一个开源的分布式版本控制系统
可以有效、高速地处理从很小到非常大的项目版本管理
也是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放码的版本控制软件
1.2.Git 的工作流程

1.3.Git 的下载与安装
(1).GIT下载
从 Git 的官网下载 Git
其官网为:https://git-scm.com
-
进入官网找到下载入口

-
选择适合的操作系统

(2).GIT安装
根据安装向导下一步式安装即可
-
第一步:双击安装包

-
第二步

-
第三步

-
第四步

-
第五步

-
第六步

-
第七步

-
第八步

-
第九步

-
第十步

-
第十一步

-
第十二步

-
第十三步

-
第十四步

-
第十五步

-
安装完成
1.4.IDEA中配置Git
-
第一步
打开设置

-
第二步

-
第三步

2.GitLab服务器安装与配置
2.1.简介
GitLab 是一个源码托管开源工具,其使用 Git 作为代码管理工具,并在此基础上搭建起来的 Web 服务
GitLab 由乌克兰程序员使用 Ruby 语言开发,后来一部分使用 Go 语言重写,生产中通常使用GitLab 搭建私有源码托管平台
官网地址:https://packages.gitlab.com/gitlab/gitlab-ce
2.2.GitLab 的安装
(1).主机要求
- 一台安装有 docker 及 docker-compose的主机
- 主机内存至少 4G
(2).拉取镜像
这里使用由 gitlab 官网发布的社区版镜像gitlab/gitlab-ce:latest
docker pull gitlab/gitlab-ce:latest
该镜像最好是先拉取到本地后再使用,因为该镜像比较大

当然也可以使用我提前下载好的镜像,上传到指定目录后,导入即可
docker load -i gitlab-ce-20260320.tar

(3).定义compose.yml
由于启动GitLab 容器时需要设置的内容较多,为了方便这里使用 docker compose 方式启动
在任意目录 mkdir 一个子目录,例如在/root下新建一个glab目录
在该目录中新建 compose.yaml 文件,文件内容如下
注意:这里给出的是带有注释版本的配置,实际操作时需要将注释信息删除,否则不能运行
[root@docker ~]# mkdir -p /root/glab
[root@docker ~]# cd /root/glab/
[root@docker glab]# vi compose.yaml
services:
# gitlab的服务名是gitlab
gitlab:
# 指定gitlab使用的镜像是社区版的镜像
image: gitlab/gitlab-ce
# 指定容器名为gitlab
container_name: gitlab
# 指定容器的重启策略为总是重启
restart: always
environment:
# 注意:这里配置的端口号一定要和ports里面配置的端口号保持一致
GITLAB_OMNIBUS_CONFIG: |
# 设置外部访问的URL地址
external_url 'http://192.168.217.137:9999'
# 设置外部通过SSH连接gitlab服务器时使用的端口号
gitlab_rails['gitlab_shell_ssh_port']=2222
# 指定端口号
ports:
- 9999:9999
- 2222:2222
# 挂载数据卷
volumes:
- ./config:/etc/gitlab
- ./logs:/var/log/gitlab
- ./data:/var/opt/gitlab

(4).启动 gitLab
使用docker-compose up -d命令启动容器服务
不过其启动过程时间较长些
docker-compose up -d

在等待过程中可以查看其启动日志(在新会话中查看)
docker-compose logs -f

注意:这个过程有些漫长,本次安装大概等待了一个小时左右
新开一个会话,进入/root/glab目录下,执行如下命令获取root用户的初始密码
注意:这个文件通常在首次启动后 24 小时会自动删除,请尽快保存密码
docker exec gitlab cat /etc/gitlab/initial_root_password

(5).修改并重启(非必须)
如果配置文件有误,需要停止容器,修改配置文件后再重启
# 1. 停止并删除容器
docker-compose down
# 2. 【重要】清理可能已损坏的配置文件
# 如果这是第一次安装,且 ./config 目录是空的,可以跳过此步。
# 如果之前启动过,建议删除 config 目录下的 gitlab.rb 和 gitlab-secrets.json,让容器重新生成
rm -rf ./config/gitlab.rb ./config/gitlab-secrets.json
# 3. 重新启动
docker-compose up -d
# 4. 查看日志确认启动情况 (GitLab 启动较慢,通常需要 5-10 分钟)
docker-compose logs -f

2.3.GitLab 的密码配置
(1).浏览器访问
在浏览器中直接键入"http://192.168.217.137:9999"即可打开登录页面

不过这个过程一般需要的时间较长
这里需要登录的用户名与密码
-
默认用户名
默认的用户名为 root
-
默认密码
初始密码在容器中
/etc/gitlab/initial_root_password两种方式查看
-
方式1
进入容器查看该文件内容,然后再将root 用户名与复制来的密码填写到登录页面的相应位置即可登录成功
[root@docker glab]# docker exec -it gitlab /bin/bash root@3bf0b878a28b:/# root@3bf0b878a28b:/# cat /etc/gitlab/initial_root_password
-
方式2
执行如下命令获取root用户的初始密码
注意:这个文件通常在首次启动后 24 小时会自动删除,请尽快保存密码
docker exec gitlab cat /etc/gitlab/initial_root_password
-
(2).修改密码
登录后首先要修改初始密码
新密码要求长度不能少于8位

将复制来的初始密码粘贴到 Current password 中,要求新密码长度不能低于 8 位

密码设置成功后会需要重新登录

3.SonarQube服务器安装
3.1.简介
(1).SonarQube简介
SonarQube 是一个开源的代码扫描与分析平台,用来持续扫描、分析和评测项目源代码的质量与安全
通过 SonarQube 可以检测项目中代码量、安全隐患、编写规范隐患、重复度、复杂度、代码增量、测试覆盖率等多个维度,并通过 SonarQube web UI 展示出来
SonarQube 支持 30+种编程语言代码的扫描与分析,并能够方便的与代码 IDE、CI/CD 平台完美集成
SonarQube 的官网地址"https://www.sonarsource.com/"

(2).SonarQube插件
现在我们在官网上下到的 sonarqube 都是社区版 Community Edition
社区版代码扫描分支只支持 master,要多分支支持需要再下载一个插件 sonarqube-community-branch-plugin,放到sonarqube安装目录/extensions/plugins下面
进入到github官网https://github.com/mc1arke/sonarqube-community-branch-plugin,找到Compatibility章节查看版本兼容关系,自行下载要安装的sonarqube版本对应的插件版本进行下载
(3).查找sonarqube的版本
-
第一步
进入官网首页"https://www.sonarsource.com/"

-
第二步
找到
Produces下面的SonarQubeServer进入
-
第三步
点击
DownLoad选项查看最新版本
-
第四步(查看长期支持版)
点击
DownLoad选项,在页面下面查看长期支持版本
3.2.主机要求
-
主机硬件
一台2核4G的虚拟机
-
主机软件
安装有 docker 和 docker compose
3.3.安装与配置
(1).下载两个镜像
由于 SonarQube 需要 Postgres 数据库的支持,所以安装 SonarQube 之前需要先安装Postgres 数据库
所以需要下载 postgres 与 sonarqube 两个镜像
# 下载postgres镜像,这里下载latest版
docker pull postgres

# 下载sonarqube镜像,这里下载长期支持版
docker pull sonarqube:lts

# 查看下载的镜像
docker images

(2).创建挂载目录
# 创建数据卷目录、工作目录
mkdir -p /root/sonar/sonarqube/conf
mkdir -p /root/sonar/sonarqube/data
mkdir -p /root/sonar/sonarqube/extensions
mkdir -p /root/sonar/sonarqube/lib/bundled-plugins
mkdir -p /root/sonar/postgresql
mkdir -p /root/sonar/postgresql/data

# 授权
# chmod 777 -R 目录
# -R 表示级联地修改,包括它下面的子路径
# 之所以要修改是因为 sonarqube ES 在启动的时候会报没有权限创建路径
chmod 777 -R /root/sonar/postgresql/
chmod 777 -R /root/sonar/sonarqube/

(3).上传插件
上传插件到/root/sonar/目录下(注意:插件目前最新版是26.2.0,但是不确定是否与版本兼容,先使用旧版本1.14.0实验一下)

(4).定义compose.yml
这里使用docker-compose方式启动两个容器
在/root/sonar目录下创建compose.yaml文件
[root@docker ~]# vi /root/sonar/compose.yaml
# services 表示有几个服务
# 当前YML有两个服务:postgres、sonarqb
services:
# 设置postgres服务
postgres:
# 使用的镜像
image: postgres
# 容器的名称
container_name: postgresdb
# 容器的重启策略
restart: always
networks:
- sonarnet
# 指定端口号映射
ports:
- 5432:5432
# 定义环境变量
# 设置创建的数据库、用户名、密码都是sonar
environment:
POSTGRES_USER: sonar
POSTGRES_PASSWORD: sonar
POSTGRES_DB: sonar
# 挂载的数据卷
volumes:
- /root/sonar/postgresql:/opt/sonar/postgresql
- /root/sonar/postgresql/data:/opt/sonar/postgresql/data
sonarqube:
# 表示拉取的镜像是"sonarqube:lts"
# lts 是镜像版本
# Long Term Support 就是 长期支持版本
image: sonarqube
# 指定容器名称
container_name: sonarqb
# 指定容器重启策略为总是重启
restart: always
# depends_on表示服务的依赖关系,定义服务间的启动顺序
# sonarqube依赖postgres,则要postgres容器先启动,sonarqube容器再启动
depends_on:
- postgres
networks:
- sonarnet
# 设置容器的端口号
ports:
- 9000:9000
# 设置环境变量,类似于"docker run -e"
# 表示连接postgres数据库的用户名、密码、默认数据库都是sonar
# 有两种格式
# 格式1
#environment:
## 设置连接postgres数据库的地址
#- SONAR_JDBC_URL: jdbc:postgresql://postgresdb:5432/sonar
## 设置连接postgres数据库的用户名
#- SONAR_JDBC_USERNAME: sonar
## 设置连接postgres数据库的密码
#- SONAR_JDBC_PASSWORD: sonar
# 格式2
environment:
# 设置连接postgres数据库的地址
SONAR_JDBC_URL: jdbc:postgresql://postgresdb:5432/sonar
# 设置连接postgres数据库的用户名
SONAR_JDBC_USERNAME: sonar
# 设置连接postgres数据库的密码
SONAR_JDBC_PASSWORD: sonar
# volumes 表示挂载的容器数据卷,类似于"docker run -v"
# volumes 左边的这些目录在宿主机上要先创建
# volumes 右边的这些目录在容器中创建
# ./表示当前目录
volumes:
- /root/sonar/sonarqube/conf:/opt/sonar/sonarqube/conf
- /root/sonar/sonarqube/data:/opt/sonar/sonarqube/data
- /root/sonar/sonarqube/extensions:/opt/sonar/sonarqube/extensions
- /root/sonar/sonarqube/lib/bundled-plugins:/opt/sonar/sonarqube/lib/bundled-plugins
- ./sonarqube-community-branch-plugin-1.14.0.jar:/opt/sonar/sonarqube/extensions/plugins/sonarqube-community-branch-plugin.jar
- ./sonarqube-community-branch-plugin-1.14.0.jar:/opt/sonar/sonarqube/lib/common/sonarqube-community-branch-plugin.jar
networks:
sonarnet:
driver: bridge
(5).挂载sonar.properies
在/root/sonar/sonarqube/conf目录下创建sonar.properies属性文件后将,让它能挂载进容器的/opt/sonar/sonarqube/conf目录
sonar.properies 配置如下
- 上面两项 javaAdditionalOpts 是 sonarqube-community-branch-plugin 插件所需要的
- 下面三项是 sonarqube 连接 postgre 所需要的,如果没有配置下面三项,sonarqube 启动起来会以内存模式启动
注意:volumes里的名称要和javaAdditionalOpts里面的名称对应上,否则 sonarqube 启动会找不到插件
[root@docker ~]# vi /root/sonar/sonarqube/conf/sonar.properies
sonar.web.javaAdditionalOpts=-javaagent:/root/sonar/sonarqube/extensions/plugins/ sonarqube-community-branch-plugin.jar=web
sonar.ce.javaAdditionalOpts=-javaagent:/root/sonar/sonarqube/extensions/plugins/ sonarqube-community-branch-plugin.jar=ce
sonar.jdbc.url= jdbc:postgresql://postgresdb:5432/sonar?currentSchema=public
sonar.jdbc.username=sonar
sonar.jdbc.password=sonar

(6).修改虚拟内存大小
在/etc/sysctl.conf文件中指定vm.max_map_count虚拟内存大小
如果不修改,sonarqube 启动起来会报虚拟内存区域不够
[root@docker ~] vi /etc/sysctl.conf
vm.max_map_count=262144

修改保存后再运行sysctl –p命令使 Linux 内核加载文件中的配置
sysctl -p

(7).启动SonarQube
通过docker-compose up –d命令启动容器并使用docker ps查看是否启动成功
-d 表示后台启动
[root@docker ~]# cd /root/sonar/
[root@docker sonar]# docker-compose up -d
[root@docker sonar]# docker ps

(8).查看是否启动成功
-
查看全部容器实例,运行的,与不在运行的都显示出来
docker ps -all -
查看容器日志
docker logs [容器ID|容器名]es、web、ce 启动成功,就证明 sonarqube 启动是成功的
# 查看sonarqb容器的日志
docker logs sonarqb

# 查看postgresdb容器的日志
docker logs postgresdb

(9).登录SonarQube
在浏览器键入 SonarQube 服务器的 IP 与端口号 9000即可打开登录页面
-
用户名
默认值为
admin -
密码
默认值为
admin

Log in后即可跳转到更新密码页面

Update 后即可看到首页

(10).安装汉化插件

点击I understand the risk(我了解风险)
在Maketplace中的Plugins模块中键入关键字Chinese后即可找到要安装的汉化插件,点击安装

安装成功后在页面上部就可看到 Restart Server 的提示让重启SonarQube,重启之后需要重新登录,再次登录成功就是中文版页面了
4.Harbor 服务器安装
4.1.Harbor 安装系统要求
Harbor 要安装的主机需要满足硬件与软件上的要求
(1).硬件要求

(2).软件要求

4.2.安装Harbor
4.2.1.下载安装包
(1).Wget下载
在官网复制 Latest 最新版的离线安装包的下载链接地址
访问https://goharbor.io/

找到合适的版本

复制链接地址

在 Linux 系统中通过wget 命令将其下载到某目录中
wget https://github.com/goharbor/harbor/releases/download/v2.15.0/harbor-offline-installer-v2.15.0.tgz

(2).Windows下载
访问https://goharbor.io/

找到合适的版本

点击安装包直接下载

4.2.2.安装Harbor
(1).上传Harbor
创建工作目录
mkdir -p /root/harbor
cd /root/harbor
上传安装包到安装目录,由于下载最新版太慢了,这里使用之前的2.13.1版本的安装包

(2).导入镜像
docker load -i goharbor-prepare-v2.13.1.tar

(3).解压安装包
将下载好的包解压到某目录中,解压后其就是一个独立的目录 harbor
tar -zxvf harbor-offline-installer-v2.13.1.tgz

# 查看目录
[root@docker harbor]# ll

(3).修改 harbor.yml
复制一份 harbor 解压包中的harbor.yml.tmpl并重命名为harbor.yaml
[root@docker harbor]# cd harbor/
[root@docker harbor]# cp harbor.yml.tmpl harbor.yml

修改 harbor.yaml 配置文件
共修改三处
- 将 hostname 指定为当前主机的 IP
- 注释掉所有 https 相关配置
- 记住(或修改)admin 用户的登录密码
另外需要注意一点harbor 默认的端口号为 80
[root@docker harbor]# vi harbor.yml

(4).运行 prepare
运行 harbor 解压目录中的prepare 命令
该命令会先拉取 prepare 镜像,然后再生成很多的其后期要用到的配置文件
[root@docker harbor]# ./prepare

(5).运行install.sh
运行 harbor 解压目录中的 install.sh 命令,其会自动完成五步的安装过程,并在最终启动很多的容器
这些容器本质上就是通过 docker-compose 进行编排管理的
[root@docker harbor]# ./install.sh

(6).查看运行的容器
docker ps

(7).重启所有容器
如果服务器关机后重启harber需要启动很多容器,比较麻烦
可以进入harber的目录中使用docker-compose up -d 命令启动所有容器
cd /root/harbor/harbor
docker-compose up -d

4.2.3.windows 浏览器访问
在浏览器地址栏中输入"http://192.168.217.137"即可看到如下页面
-
用户名: admin
-
密码: 密码为
harbor.yml中harbor_admin_password字段设置的密码

登录成功页面

4.2.4.新建仓库
在浏览器地址栏中输入"http://192.168.217.137"即可看到登录页面
登录后点击新建项目新建一个镜像仓库

查看项目列表

5.目标服务器安装与配置
目标服务器实际上就是我们的项目部署服务器
在该服务器上需要如下三点
- 安装docker引擎
- 安装docker-compose
- 创建数据接收目录
Jenkins 通过 SSH 将命令发送到目标服务器,以使目标服务器可以从 Harbor 拉取镜像、运行容器等
所以在目标服务器中需要具有一个用户接收 Jenkins 发送数据的目录
(1).docker 引擎
由于目标服务器需要从镜像中心 Harbor 中 docker pull 镜像,然后使用 docker run 来运行容器,所以目标服务器中需要安装 Docker 引擎
(2).docker-compose
由于目标服务器需要通过 docker-compose 运行 compose.yml 文件来启动容器,所以目标服务器中需要安装 docker-compose
(3).创建数据接收目录
Jenkins 通过 SSH 将命令发送到目标服务器,以使目标服务器可以从 Harbor 拉取镜像、运行容器等,所以在目标服务器中需要具有一个用户接收 Jenkins 发送数据的目录
本例将该接收目录创建在/root/jenkins/data 中
mkdir -p /root/jenkins/data

6.Jenkins 安装与配置
6.1.Jenkins 简介
(1).百度百科
Jenkins 是一个开源软件项目,是基于 Java 开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成
(2).主机要求
需要一台安装有docker 及docker-compose 的主机
6.2.Jenkins安装
(1).下载镜像
这里要使用 docker 方式来安装 Jenkins,所以需要先下载 Jenkins 的镜像
docker pull jenkins/jenkins:latest

(2).启动 jenkins
使用 docker run 命令启动 Jenkins
注意
-
数据卷
这里的数据卷配置为
/var/jenkins_home目录,这是jenkins默认存放插件、配置文件等的目录可以修改成自己指定的目录
-
8080端口
访问jenkins使用的端口
-
50000端口
Jenkins通讯使用的端口
docker run --name jenkins \
--restart always \
-p 8080:8080 \
-p 50000:50000 \
-v /var/jenkins_home:/var/jenkins_home \
-d jenkins/jenkins:latest

(3).修改数据卷权限
当 Jenkins 启动后通过docker logs jenkins命令查看jenkins 的日志可以看到出错了
# 查看日志
docker logs jenkins

原因是jenkins需向数据卷挂载点的文件/var/jenkins_home/copy_reference_file.log中写入日志时,但是该文件的操作权限只有root用户有,因此需要修改该文件的权限以便jenkins能写入日志
# 查看权限
ll /var

此时需要修改数据卷操作权限(为非 root 用户添加写操作权限)
# 授权
chmod -R 777 /var/jenkins_home

此时再查看发现已经具备了写操作权限
# 查看权限
ll /var

(4).重启 jenkins
重启 jenkins 容器
# 重启jenkins
docker restart jenkins

(5).修改插件下载源
由于 jenkins 在后期运行时需要下载很多的插件,而这些插件默认都是从国外的 Jenkins官方服务器上下载的,下载速度很慢且下载失败的比例很高
所以一般会先将这些插件的下载源更新为国内的服务器
该更新文件是数据卷目录中的hudson.model.UpdateCenter.xml
# 查看该文件
ll /var/jenkins_home/

查看该文件内容
# 查看文件内容
cat /var/jenkins_home/hudson.model.UpdateCenter.xml

将该默认的<url>更换为其它的下载源地址
-
华为源
https://repo.huaweicloud.com/jenkins/updates/current/update-center.json
-
清华源
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/current/update-center.json
-
中科大
https://mirrors.ustc.edu.cn/jenkins/updates/current/update-center.json
-
阿里云
http://mirror.bit.edu.cn/jenkins/updates/current/update-center.json
-
原始源
https://updates.jenkins.io/update-center.json
如果上面的源不好使,可以换回原始源,之后执行重启命令
docker restart jenkins即可
【示例】
[root@docker ~]# vi /var/jenkins_home/hudson.model.UpdateCenter.xml
<?xml version='1.1' encoding='UTF-8'?>
<sites>
<site>
<id>default</id>
<url>https://repo.huaweicloud.com/jenkins/updates/current/update-center.json</url>
</site>
</sites>

(6).查看admin 默认密码
通过docker logs --tail 1000 jenkins命令查看日志可以看到已经正常了
并且在最后还可以看到jenkins 的 admin 用户及其初始化密码
docker logs --tail 1000 jenkins

(7).插件下载
在浏览器中键入jenkins 的地址"http://192.168.217.137:8080"后进行访问,可看到 Jenkins 解锁页面
在管理员密码中输入前面docker logs --tail 1000 jenkins中看到的初始化密码后继续

点击选择插件来安装

插件保持默认选择的即可

开始安装
该页面需要的时间可能会较长

如果插件安装失败可以在登录后手动下载
-
Folders
-
OWASP Markup Formatter
-
JSON Path API
-
Structs
-
Pipeline: Step API
-
Token Macro
-
Build Timeout
-
Credentials
-
Plain Credentials
-
SSH Credentials
-
Credentials Binding
-
SCM API
-
Pipeline: API
-
Timestamper
-
Script Security
-
JAXB
-
JSON Api
-
Jackson 2 API
-
commons-text API
-
Pipeline: Supporting APIs
-
Plugin Utilities API
-
Font Awesome API
-
Bootstrap 5 API
-
JQuery3 API
-
ECharts API
-
Checks API
-
JUnit
-
Matrix Project
-
Resource Disposer
-
Workspace Cleanup
-
Ant
-
OkHttp
-
Pipeline: Nodes and Processes
-
Pipeline: SCM Step
-
Pipeline: Groovy
-
Pipeline: Job
-
Apache HttpComponents Client 4.x API
-
Mailer
-
Pipeline: Basic Steps
-
Gradle
-
Pipeline: Milestone Step
-
Pipeline: Build Step
-
Pipeline: Groovy Libraries
-
Pipeline: Stage Step
-
Pipeline: Model API
-
Pipeline: Declarative Extension Points API
-
Branch API
-
Pipeline: Multibranch
-
Pipeline: Stage Tags Metadata
-
Mina SSHD API :: Common
-
Mina SSHD API :: Core
-
Gson API
-
Trilead API
-
Git client
-
Pipeline: Input Step
-
Pipeline: Declarative
-
Pipeline
-
Java JSON Web Token (JJWT)
-
GitHub API
-
Git
-
GitHub
-
GitHub Branch Source
-
Pipeline: GitHub Groovy Libraries
-
Pipeline Graph Analysis
-
Pipeline: REST API
-
Pipeline: Stage View
-
SSH Build Agents
-
Matrix Authorization Strategy
-
LDAP
-
Email Extension
-
Localization: Chinese (Simplified)
(8).创建管理员用户
当插件下载完毕后,会自动跳转到该页面
填写上第一个管理员信息后保存并完成
-
用户名
这里填写的用户名为
admin -
密码
密码为自己随意设置

配置实例

配置完成

登录成功页面

6.3.Jenkins配置
6.3.1.配置JDK
由于 Jenkins 通过调用 Maven 来实现对项目的构建,所以需要在 Jenkins 主机中安装Maven
由于 maven 的运行需要 JDK 的环境所以需要安装 JDK
对于 JDK 的安装非常简单,只需要从官网下载相应版本的 JDK 到 Linux 系统后直接解压即可无需配置
(1).下载
官网地址: https://www.oracle.com/
下载过程不再展示,自行下载即可
(2).安装
这里下载的是jdk-8u431-linux-x64.tar.gz
将其解压到了/root/jdk目录下并重命名为了jdk
注意:这里的/root/jdk目录是临时目录,也可以直接解压到jenkins的挂载目录/var/jenkins_home中
# 创建目录
mkdir -p /root/jdk/
cd /root/jdk/
上传安装包

# 解压缩
tar -zxvf jdk-8u431-linux-x64.tar.gz -C /root/jdk/

# 重命名
mv jdk1.8.0_431/ jdk

(3).移动JDK
将 Jenkins 主机中的JDK解压目录移动到数据卷/var/jenkins_home 中
注意:这里最好使用mv命令移动
cp -r /root/jdk/jdk /var/jenkins_home/

(4).配置JDK
在Manage Jenkins的Tools模块中JDK

配置JDK
这里填写的是容器中挂载点目录中的路径


最后再应用并保存
6.3.2.配置maven
由于 Jenkins 通过调用 Maven 来实现对项目的构建,所以需要在 Jenkins 主机中安装Maven
(1).下载 maven
首先需要从官网下载最新版本的 Maven 到 Linux 系统后直接解压
官网地址:https://maven.apache.org/


(2).解压 maven
这里下载的是apache-maven-3.9.9-bin.tar.gz,将其解压到/root/maven目录下并重命名为maven
注意:这里的/root/maven目录是临时目录,也可以直接解压到jenkins的挂载目录/var/jenkins_home中
# 创建工作目录
mkdir -p /root/maven
cd /root/maven/

上传安装包

# 解压缩
tar -zxvf apache-maven-3.9.9-bin.tar.gz -C /root/maven

# 重命名
mv apache-maven-3.9.9 maven

(3).配置 maven 镜像仓库
maven 解压后需要修改解压目录中conf/settings.xml文件中的配置
这里配置maven的镜像源为aliyun的源、ibiblio源、开源中国镜像的源
[root@docker maven]# cd /root/maven/maven/conf/
[root@docker conf]# vi settings.xml
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.2.0 https://maven.apache.org/xsd/settings-1.2.0.xsd">
<localRepository>/var/jenkins_home/repository</localRepository>
<mirrors>
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
<!-- ibiblio镜像 -->
<mirror>
<id>ibiblio</id>
<name>Mirror from Maven ibiblio</name>
<url>http://mirrors.ibiblio.org/pub/mirrors/maven2/</url>
<mirrorOf>central</mirrorOf>
</mirror>
<mirror>
<!-- 开源中国镜像 -->
<id>CN</id>
<name>OSChina Central</name>
<url>http://maven.oschina.net/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
</settings>
(4).配置 maven 编译器版本
- maven 默认的编译器版本为 JDK1.4,这里需要指定为 JDK1.8
- 配置了该<profile>后在文件最后的<activeProfiles>中再激活一下即可
[root@docker maven]# cd /root/maven/maven/conf/
[root@docker conf]# vi settings.xml
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.2.0 https://maven.apache.org/xsd/settings-1.2.0.xsd">
<!--配置JDK-->
<profiles>
<profile>
<id>jdk-8</id>
<activation>
<jdk>1.8</jdk>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
</profiles>
<activeProfiles>
<activeProfile>jdk-8</activeProfile>
</activeProfiles>
</settings>

(5).配置Maven仓库地址
# <localRepository>仓库路径</localRepository>
<localRepository>/var/jenkins_home/repository</localRepository>

# 创建仓库目录
mkdir -p /var/jenkins_home/repository
# 给目录授权
chmod -R 777 /var/jenkins_home/repository

(6).移动Maven
将 Jenkins 主机中的Maven 解压目录移动到数据卷/var/jenkins_home 中
cp -r /root/maven/maven /var/jenkins_home/

(7).配置Maven
在Manage Jenkins的Tools模块中配置 Maven

配置maven

这里填写的是容器中挂载点目录中的路径

最后再应用并保存
6.3.3.配置 Jenkins插件
点击Manage Jenkins中的Plugins选项

在Available plugins选项卡页面的搜索栏中分别键入Git Parameter与Publish Over SSH,选中它们后点击安装
-
Git Parameter插件
该插件的作用是当Jenkins从gitlab拉取代码到本地时可以填写一些参数信息
-
Publish Over SSH插件
该插件是Jenkins连接目标服务器时使用的工具

然后就可看到下载过程显示等待,直到看到下面的Success后,即可返回首页了

6.3.4.汉化Jenkins(非必须)
如果是英文页面,可以安装一个汉化插件

安装成功后自动重启jenkins

6.4.Jenkins 集成 SonarQube
注意:Sonarqube分为客户端和服务端,客户端扫描代码,将扫描的结果信息上传到服务端,在服务端进行展示,因此下面过程分为以下几步
- 在jenkins中安装客户端
- 在jenkins中安装客户端插件
- 在jenkins中配置服务端信息,这样jenkins可以将客户端扫描的信息上传到服务端
- 在jenkins中配置客户端信息,这样jenkins才能知道sonar的客户端在哪里,才能调用客户端工作
配置jenkins的插件有两种
-
本地插件配置
在
系统管理下的全局工具配置中
-
远端服务配置
在
系统管理下的系统配置中
6.4.1.安装Sonar客户端
(1).SonarScanner 简介
SonarScanner是SonarQube的客户端,是一种代码扫描工具,专门用来扫描和分析项目代码质量,扫描和分析完成之后会将结果写入到 SonarQube 服务器的数据库中并在 SonarQube 平台显示这些数据
(2).下载SonarScanner客户端
官网地址: https://www.sonarsource.com/
在 SonarQube 官网的帮助文档中可以下载 SonarScanner,这里下载一个 Linux 系统下使用的版本
注意:这里给出的是下载的方法,但是最新版需要JDK21,由于我们前面配置的是JDK8,因此需要下载一个之前的版本
在Produces中选择SonarQube Server

选择Docs

下载安装包

(3).安装unzip工具
由于下载的SonarScannner 是 zip 压缩类型的,所以需要在 Linux 系统中安装 unzip 命令以解压该压缩包
yum install -y unzip

(4).解压/移动
因为是要在jenkins中安装scanner,因此需要将scanner安装包移动到jenkins的容器挂载目录中
上传安装包到容器挂载目录/var/jenkins_home/

# 解压缩安装包
cd /var/jenkins_home/
unzip sonar-scanner-cli-6.2.1.4610-linux-x64.zip

# 重命名安装包为sonar-scanner
mv sonar-scanner-6.2.1.4610-linux-x64/ sonar-scanner

(5).修改配置文件
在 sonar-scanner 目录的 conf 目录下有其配置文件 sonar-scanner.properties
修改该配置文件
-
sonar.host.url
配置sonarqube服务器的地址
-
sonar.sources
配置需要检测的源码的地址
这里配置
./代表当前目录,也就是/var/jenkins_home/workspace/项目名目录后期有了项目以后会在
/var/jenkins_home目录下创建一个workspace目录,在该目录下存放项目信息假如有5个项目,那么workspace下就会有5个目录,目录名就是对应的项目名
-
sonar.java.binaries
./target代表的是项目下的二进制包的目录
[root@docker jenkins_home]# vi /var/jenkins_home/sonar-scanner/conf/sonar-scanner.properties
# 添加如下配置
# 配置sonarqube服务器的地址
sonar.host.url=http://192.168.217.137:9000
# 配置编码方式
sonar.sourceEncoding=UTF-8
# 配置源码路径
sonar.sources=./
# 配置打包路径
sonar.java.binaries=./target

6.4.2.集成Sonar客户/服务端
(1).安装SonarScanner客户端插件
在Jenkins 页面的Manage Jenkins菜单的Plugins插件管理的Available plugins中搜索sonarqube scanner来安装该插件
该插件用于连接 SonarScanner

勾选对应的插件名

安装成功

安装完毕后,点选安装完成后重启 Jenkins进行重启

注意:旧版本中可能需要重新登录jenkins
(2).配置SonarQube服务器信息
在 Jenkins 页面的系统管理下的系统配置中找到SonarQube servers, 添加SonarQube 服务器的配置


注意:点击+添加的意思就是把配置的服务器地址信息添加到jenkins配置中
选择全局凭据

设置使用用户名、密码验证

设置凭据

然后保存

(3).配置SonarScanner客户端
这里要将前面安装在 Jenkins 数据卷中的 SonarScanner 配置到 Jenkins 中
在 Jenkins 页面的系统管理下的全局工具配置中找到 SonarQube Scanner

选择新增Sonarqube Scanner

配置信息如下

6.5.集成目标服务器
这里要配置连接到目标服务器的连接方式,因为jenkins最终要将项目数据发送到目标服务器进行,因此要配置目标服务器的IP、数据存储目录、登录目标服务器的用户名、登录目标服务器的密码等信息

将页面拉到最下面,可以看到 Publish over SSH
这里可以设置非对称加密的身份验证方式,也可设置对称加密的身份验证方式
这里采用对称加密身份验证方式
点击新增按钮

配置信息

往下拉

填写完毕后,页面拉到最下面,点击 Test Configuration 进行测试,如果可以看到 Success,说明连接成功,然后再应用并保存
更多推荐
所有评论(0)