使用Jenkins实现自动化构建
一个大型平台的微服务架构设计通常会产生很多项目工程,因此会有很多服务和应用需要部署,并且需要不断地迭代和更新,这是一个庞大的工程,所以我们需要借助自动化工具,实现各个微服务工程的CICD工作流程。
CICD是持续集成(Continuous Integration)和持续部署(Continuous Deployment)的总称,是指通过自动化的构建、测试和部署,实现软件产品可循环使用的快速交付流程。
Jenkins是一个基于Java开发的功能强大的自动化构建工具,并且有一个非常丰富的插件仓库,可以很好地扩充和丰富其本身的功能。因此,Jenkins是实现自动化构建的一个很不错的工具。
单击Jenkins首页上的Plugins选项,可以查看各种插件的介绍,如图15-1所示。
本章我们使用Jenkins,结合Maven、Docker、Selenium和JMeter等工具,建立一个可持续交付的自动化设施。
持续交付工作流程
从代码提交开始,建立一个包括自动测试和自动部署的持续交付工作流程如图15-2所示。
这个工作流程的步骤如下所示:
(1)开发者向GitLab提交代码。
(2)GitLab使用 WebHook通知Jenkins有代码更新。
(3)Jenkins 从节点(Slave)拉取代码,打包并构建镜像。
(4)Jenkins使用从节点上构建的镜像运行测试用例。
(5)如果测试(Test)通过,则将镜像推送到镜像仓库。
(6)Jenkins在应用服务器上进行更新部署。
(7)Jenkins将构建报告以邮件方式通知开发者。
在开发者向代码库提交代码之后,整个流程都是自动进行的。如果中间某个环节出现错误,则中止流程的执行,并将结果通知相关人员。提交的代码不仅包括应用程序,还包括构建镜像的脚本、测试用例的脚本和部署的编排脚本等。
其中,各个步骤的操作可以使用插件或直接在命令行中使用各种工具来完成。
例如,拉取项目代码会用到Git插件;打包项目会用到 Maven;构建镜像和应用部署可直接通过命令行使用Docker或docker-compose;集成测试可通过命令行执行由Selenium、JMeter等生成的脚本。
下面,我们通过一个简单的案例,演示和说明Jenkins 的使用方法。
Jenkins的安装
下面的安装过程以MacOS为例进行说明。
因为Jenkins需要JVM的支持,所以请确保机器上已经安装了JDK 1.8或以上版本。为了完成后面的自动化演示,请确保机器中已经安装了Maven、Git客户端和 Docker等。
打开Jenkins官网,进入下载页面,选择左边的LTS稳定版中的Mac OSX版本进行下载,如图15-3所示。
下载完成后,单击安装包“jenkins-2.89.1.pkg”开始安装。
安装过程比较简单,直接单击“继续”按钮,按提示使用系统推荐使用的插件即可。安装完成后,通过下列网址打开本地的Jenkins控制台:
http://localhost:8080
第一次打开后会看到如图15-4所示页面。
按图15-4的提示打开管理员密码文件,把密码复制并粘贴到密码输入框中,单击右下角的Continue 按钮。如果密码验证成功,则会提示读者创建一个操作员用户。在创建用户之后,即可登录Jenkins控制台。新用户登录的欢迎界面如图15-5所示。
Jenkins的基本配置
由于要用到Maven编译和打包,所以单击欢迎界面的“系统管理”→“全局工具配置”选项,如图15-6所示&