Jenkins做持续集成的一次实践

众所周知,我们在敏捷开发模式里一项很重要的工作就是搭建持续集成(CI)环境,将项目源码工程的编译,打包,测试,部署像流水线一样自动化地进行,整个操作过程无须人工介入,从而提高版本部署的质量,提高版本发布的效率,这是因为简单重复的工作人工操作非常容易出错,而机器通常不会

如果你负责测试的项目中这一块还是空白,那么这篇文章通过一次实践正好带你入门,让你了解 CI 的基础

1. 准备工作

我们采用业界最流行的框架 Jenkins 来实现 CI,它可以在 Windows,Mac,多种 Linux 系统上安装,本文是在 Windows 侧进行安装的

它的安装方式非常简单,可以到官网下载安装包,也可以使用 Docker,这里提供一个官网 Windows 的下载路径

https://www.jenkins.io/download/thank-you-downloading-windows-installer-stable/

安装过程不是本文重点,网上的安装帖子非常多,大家可自行搜索

安装完毕通过浏览器就可以启动 Jenkins 的页面了

Jenkins做持续集成的一次实践_第1张图片

开始实践

没错,装完就可以实践了。Jenkins 很多工作依赖其插件,所以先配置好插件这一块的参数

1. 修改默认的插件 url

假设我们配置的访问端口号是 8080,进入插件管理页,url 的相对路径是 pluginManager/advanced

我们把升级站点的 URL 修改为

http://mirror.esuni.jp/jenkins/updates/update-center.json

这里使用的是国内镜像的路径,下载插件速度和成功率就更高

2. 安装几个必要的插件

通常我们遇到的项目是 Maven 编译和 Gradle 编译,在插件管理页中下载插件

Maven Integration

Gradle Plugin

由于本次实践通过 FTP 将构建文件发布到服务器,所以把 FTP 插件也下载

Publish Over FTP

3. 创建 Maven 任务

Jenkins 任务的流程基本上是以下几个步骤构成:

1)源码管理,2)构建触发器,3)构建环境,4)Build 前置操作,5)Build,6)Build 后置操作,7)构建后操作

总结起来思路是,下载源码,执行构建,发布构建文件

一,新建 Item

按这个思路,我们在首页点击 新建Item,开始任务的创建。第一个实践任务是构建一个maven项目

Jenkins做持续集成的一次实践_第2张图片

这里我使用 Git 来下载源码,点击添加按钮将你的 Git 账号密码写进去,这样 Jenkins 才有权限访问到仓库

Jenkins做持续集成的一次实践_第3张图片

一般我们用 ssh 方式登录到 git 服务器,所以添加的凭据类型是 SSH Username with private key

留意描述Username 在图中的填写说明

private key 这里将计算机上 ssh 的私钥文件里全部内容复制贴进来

Jenkins做持续集成的一次实践_第4张图片

回到创建任务的界面,凭证选择刚刚添加的即可

接下来在 Build 部分,执行 clean package 命令去构建

Jenkins做持续集成的一次实践_第5张图片

保存设置以后,回到上一页

二,配置编译参数

访问全局配置页面,url 相对路径是 configure

将 Maven 项目配置中全局 MAVEN_OPTS 配置为,等号右边是你本地仓库的路径

-Dmaven.repo.local=C:\Users\xxx\.m2\repository

这个配置是指定 Maven 编译时的本地仓库路径,如果不指定,Jenkins 会重新下载 pom 文件中的依赖到某个路径下,适用于本地已经有依赖仓库的情况

全局属性Environment variables 打开,设置几个环境变量,这在编译时会被使用到

JAVA_HOME,M2_HOME,PATH+EXTRA

Jenkins做持续集成的一次实践_第6张图片

三,配置编译工具

进入全局工具配置页面,url 相对路径是 configureTools

配置 JDK,Git,Maven 的安装路径

一般建议自己在本地安装好上述工具以后,在这里指定路径,而不使用自动下载的方式

4. 执行任务

回到刚刚的 Item 页,左侧列表点击 Build Now 即开始任务执行

Jenkins做持续集成的一次实践_第7张图片

下方的构建历史会增加一行,查看控制台输出,可以浏览任务执行过程的日志信息

Jenkins做持续集成的一次实践_第8张图片

到这里,有的人可能会构建失败或者出现其他问题,就会产生疑问,我写一个批处理或者 shell 脚本不也可以达到这个目的吗,而且更简单

其实不然,眼光需放长远一点,Jenkins 会将每次构建进行记录,保存构建历史,便于回溯检查。而脚本执行完就结束了,后续回头查问题就别想了

5. 发布到 FTP 服务器

现在我们将构建文件发布到 FTP 上,当然,也可以发布到其他类型服务器,利用 Jenkins 的插件就可以实现

进入全局配置页面,找到 Publish over FTP,添加一个 FTP 服务器地址

Jenkins做持续集成的一次实践_第9张图片

回到刚刚的任务页面,点击任务的配置按钮进行修改,在Post Steps 添加 Send Files over FTP

Jenkins做持续集成的一次实践_第10张图片

名词解释:

Source files:需要发送到 FTP 的文件或者目录,可以填相对路径,会基于当前任务在本地创建的目录为根目录。可以用通配符指定。比如:target\* 表示将 target 目录下所有文件及子目录发送;target\build.jar 表示发送 build.jar

Remove prefix:如果不指定这个参数,那么会将 target 目录在 FTP 上也创建出来,于是这里指定为 target\ ,就只会将 build.jar 发布到 FTP,而不会创建 target 目录

Remote directory:要发送到 FTP 上相对根目录的路径

配置好以后,重新 Build 一次,如果构建成功,在 FTP 上相应目录就可以看到构建文件被发布上来了

总结

这一次的实践,让我们了解 Jenkins 是什么,以及它的基本操作流程。实际上它的强大远不止这些,各位看官可以自行研究其玩法,后续我也会再根据实践分享它的其他构建方式

你可能感兴趣的:(测试开发之【测试】,jenkins)