文章目录
一、持续集成工具 Jenkins 介绍
1. 什么是持续集成
持续集成(Continuous Integration,CI)。随着软件开发复杂度的不断提高,如何更好的协同开发以确保软件开发质量已经成为了开发团队所追求的目标,特别是近年来 “敏捷开发
” 在互联网领域的兴起,如何能够在不断变化的需求中快速适应和保证开发质量显得尤为重要。
持续集成就是针对这类问题的一种软件开发实践,倡导团队必须经常集成他们的工作,而每次的集成都是通过自动化的构建来验证的,包括自动编译、发布、测试,从而更快发现集成错误,让团队更快的开发内聚的软件。
持续集成具有以下特点:
- 是一个自动化的周期性的集成测试过程,从检出代码、编译构建、运行测试,再到结果记录、测试统计等都是自动完成,无需人工干预
- 需要有专门的集成服务器来执行集成构建
- 需要有代码托管工具支持
持续集成的出现,保证开发团队交代码的质量,减轻了软件发布时的压力;其次就是全程自动完成,无需太多人工干预,极大的减少了重复的过程,节省了时间、工作量和成本。
2. Jenkins 介绍
Jenkins 原名 Hudson,2011 年修改为 Jenkins,它是一个开源的实现软件持续集成的工具。官网地址如下(也有中文网址):
Jenkins
Jenkins – an open source automation server which enables developers around the world to reliably build, test, and deploy their software
https://www.jenkins.io/
Jenkins 能实时监控集成中存在的错误,提供详细的日志文件和提醒功能,还可以用图表的形式形象的展示项目构建的趋势和稳定性。
Jenkins 具有以下特点:
- 易安装:官网下载直接运行
- 易配置:提供了友好的 GUI 配置界面
- 变更支持:能从代码仓库中获取并产生代码更新列表,输出到编译输出信息
- 支持永久链接:用户是通过 Web 来访问 Jenkins 的,而这些 Web 界面的链接地址是永久的,可在任何文档中直接使用
- 集成 E-mail/RSS/IM
- JUnit/Test NG 测试报告:以图表形式提供测试报告
- 文件指纹信息:会保存哪次集成构建产生了哪些 jars 文件,哪次集成使用了哪个版本的 jars 文件等记录
- 支持第三方插件
二、Jenkins 的安装与部署
1. 安装 Jenkins
第一步,下载 Jenkins 安装包,打开Jenkins 官方文档;
点击 “Installing Jenkins”,可以看到可供下载的各个版本;
选择 Linux(演示虚拟机为 CentOS 系统)下的 CentOS 系统;
可以看到官方提供的在线安装方式;
打开 Xhell 并连接虚拟机/服务器,按照以下步骤进行下载;
# 下载镜像
wget -O /etc/yum.repos.d/jenkins.repo \
https://pkg.jenkins.io/redhat-stable/jenkins.repo
# 安装
rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
# 更新
yum upgrade
# 安装 Java 环境
yum install java-11-openjdk
#安装 Jenkins
yum install jenkins
#启动Jenkins
systemctl start jenkins
2. 本地访问 Jenkins
Jenkins 安装完成之后,就可以使用 虚拟机/服务器IP:端口
在本地进行访问了,初始界面如下;
修改默认端口
vim /usr/lib/systemd/system/jenkins.service
Environment="JENKINS_PORT=8080" #修改这条就行
修改完成后执行 systemctl daemon-reload
后就可以重启jenkins服务了
在Linux在安装好了Jenkins之后,访问Jenkins,一直出现Please wait while Jenkins is getting ready to work …
,打开F12控制台发现一直报错如下:ERROR 503: Service Unavailable.
解决方案如下:
- 进入Jenkins的工作目录(
/var/lib/jenkins
),编辑hudson.model.UpdateCenter.xml
文件
vi /var/lib/jenkins/hudson.model.UpdateCenter.xml
- 将
https://updates.jenkins.io/update-center.json
修改为http://mirror.xmission.com/jenkins/updates/update-center.json
- 保存后重启Jenkins
systemctl restart jenkins
再次访问,就会出现如下界面:
根据提示密码存于 /var/lib/jenkins/secrets/initialAdminPassword 目录中;
cat /var/lib/jenkins/secrets/initialAdminPassword
输入密码后进入如下界面;
我们选择安装推荐的插件,Jenkins 便会开始自动下载安装,如下正在安装;
安装完成后,创建我们的第一个用户;
进入 Jenkins 主页如下;
3. 插件的安装
使用推荐安装方式只能帮我们安装一部分最为常用的插件,有某些插件如 maven 等还是需要我们手动去安装的。
点击 “系统管理” --> “插件管理”;
在这里可以看到我们需要的插件,按需下载即可;
4. 卸载 Jenkins
# rpm卸载Jenkins
rpm -e jenkins
# 检查是否卸载成功
rpm -ql jenkins
# 彻底删除残留文件
find / -iname jenkins | xargs -n 1000 rm -rf
三、Jenkins 全局配置
全局配置的目的在于告诉 Jenkins 各种工具的路径在何处,使得 Jenkins 能够通过插件来调用这些软件。我们这里均采用下载压缩包然后上传虚拟机/服务器的方式进行演示。
点击“系统管理” --> “全局配置”,可以看到需要配置的插件,需要配置的有 jdk、git、maven 工具;
1. Git 的安装与配置
(直接使用 yum 命令安装虽然更为简单但版本会很低,为防止今后报错所以推荐此方式安装)
打开 git官网 ,下载git对应操作系统的版本。
所有东西下载慢的话就可以去找镜像!
官网下载太慢,我们可以使用淘宝镜像下载:
https://mirrors.edge.kernel.org/pub/software/scm/git/
首先下载 git 压缩包并上传至虚拟机/服务器;
按照以下步骤进行操作;
#1.解压压缩包
tar -zxvf git-2.27.0.tar.gz # -C /dhx/ 解压到指定目录
#2.在Linux系统中是需要编译源码的,首先下载所需要的依赖
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker
#3.卸载旧版本的 git(安装依赖是会自动安装 git,所以需要卸载旧版本)
yum -y remove git
#4.进入解压后的文件夹
cd git-2.27.0
#5.编译git源码
make prefix=/usr/local/git all
#6.安装git至/usr/local/git路径
make prefix=/usr/local/git install
#7.配置环境变量
vi /etc/profile
在底部加上该行代码:export PATH=$PATH:/usr/local/git/bin
#8.配置完成后刷新环境变量
source /etc/profile
操作完成之后使用命令 git --version
查看 git 版本,如下 2.27 版本安装成功;
[root@192 git-2.27.0]# git --version
git version 2.27.0
此时我们查看一下 git 路径 which git
;
[root@192 git-2.27.0]# which git
/usr/local/git/bin/git
使用该路径设置全局配置;
2. JDK 的安装与配置
下载一个 jdk 的 rpm 包并上传至虚拟机/服务器;
然后使用命令 rpm -ivh jdk-8u171-linux-x64.rpm
进行安装;
安装后的根目录为 /usr/java/jdk1.8.0_171-amd64;
使用此路径设置全局;
使用上面默认的JDK安装目录在安装完成后,默认的安装目录是在:
/usr/lib/jvm/
下面
3. maven 的安装与配置
下载 apache-maven .tar.gz 包并上传至虚拟机/服务器;
解压压缩文件;
tar -zxvf apache-maven-3.6.3-bin.tar.gz -C /dhx
使用此路径及解压后的文件名设置全局;
全部配置完成之后,点击保存、点击应用。
三、将代码上传至 Git 服务器
1. Gogs 的搭建与配置
Gogs 是一款极易搭建的自助 Git 服务,它的目标在于打造一个最简单、快速和轻松的方式搭建 Git 服务。使用 Go 语言开发的它能够通过独立的二进制进行分发,支持了 Go 语言支持的所有平台,包括 Linux、Mac OS、Windows 以及 arm 平台。与传统 Git 相比它最大的优势在于拥有图形化界面。
- 第一步:下载镜像
docker pull gogs/gogs
;
[root@192 ~]# docker pull gogs/gogs
Using default tag: latest
latest: Pulling from gogs/gogs
97518928ae5f: Pull complete
d20a5437c0b4: Pull complete
ec9934e62f5f: Pull complete
2a880a4f6876: Pull complete
7bb13647629b: Pull complete
641b202f48eb: Pull complete
8f12f9a5cd7d: Pull complete
Digest: sha256:fbae7c126411d3fa3f8fdca17a65b196887ab23e3b7375f682a13daf5806bb19
Status: Downloaded newer image for gogs/gogs:latest
docker.io/gogs/gogs:latest
[root@192 ~]#
- 第二步:创建 Gogs 容器
docker run -di --name=gogs -p 10022:22 -p 3000:3000 -v /var/gogsdata:/data gogs/gogs
;
- 容器名称 gogs
- 端口映射,22 端口映射为 10022,3000 端口映射为 3000
[root@192 ~]# docker run -di --name=gogs -p 10022:22 -p 3000:3000 -v /var/gogsdata:/data gogs/gogs
3af9726ff2d9430be43f7f3d78c206b9a53d356347e8a92c23316a7d2e6533f8
[root@192 ~]#
- 第三步:在本地浏览器进行访问,初始界面如下;
此处选择数据库类型为 SQLite3
修改域名为 192.168.200.129
修改应用 URL 为 http://192.168.200.129:3000/
随后点击“立即安装”,Gogs 安装与配置完成;
2. 将本地代码上传至 Gogs 的仓库
首先我们创建一个仓库;
创建成功后就可以将代码上传至仓库了;
这里我使用 idea(本地 git 环境已搭建,这里不再赘述)以及一个示例项目演示上传操作;
选中项目,右键点击 “file” --> “git” --> “Repository” --> “Reomtes”;
接下来增加远程地址,也就是我们 Gogs 远程仓库的地址;
此时就可以进行代码上传了,先点击 “Git” --> “Add”,将项目上传至暂存区;
选择 “git” --> “Repository” --> “push” 进行推送;
输入用户名和密码登录 Gogs 后即可推送成功;
此时再次查看 Gogs 中的仓库,可以看到项目已上传至 Gogs 仓库;
代码上传至 Git 演示成功。
四、任务的创建与执行
登入 Jenkins,点击 “新建 Item”,输入任务名称并选择“构建一个maven项目”;
点击“确定”,之后我们作出如下配置;
项目描述
源码管理
build
clean package -DpushImage
配置完成,点击保存,项目即创建完成;
返回面板,点击按钮执行此任务;
此操作相当于我们将项目文件的执行过程拿到了 Jenkins 系统当中。