众所周知,我们在敏捷开发模式里一项很重要的工作就是搭建持续集成(CI)环境,将项目源码工程的编译,打包,测试,部署像流水线一样自动化地进行,整个操作过程无须人工介入,从而提高版本部署的质量,提高版本发布的效率,这是因为简单重复的工作人工操作非常容易出错,而机器通常不会如果你负责测试的项目中这一块还是空白,那么这篇文章通过一次实践正好带你入门,让你了解 CI 的基础
1. 准备工作
我们采用业界最流行的框架 Jenkins 来实现 CI,它可以在 Windows,Mac,多种 Linux 系统上安装,本文是在 Windows 侧进行安装的它的安装方式非常简单,可以到官网下载安装包,也可以使用 Docker,这里提供一个官网 Windows 的下载路径https://www.jenkins.io/download/thank-you-downloading-windows-installer-stable/安装过程不是本文重点,网上的安装帖子非常多,大家可自行搜索安装完毕通过浏览器就可以启动 Jenkins 的页面了a7e477dc62325ada0d810ce36efa27df.png
开始实践
没错,装完就可以实践了。Jenkins 很多工作依赖其插件,所以先配置好插件这一块的参数
1. 修改默认的插件 url
假设我们配置的访问端口号是 8080,进入插件管理页,url 的相对路径是 pluginManager/advanced我们把升级站点的 URL 修改为http://mirror.esuni.jp/jenkins/updates/update-center.json这里使用的是国内镜像的路径,下载插件速度和成功率就更高
2. 安装几个必要的插件
通常我们遇到的项目是 Maven 编译和 Gradle 编译,在插件管理页中下载插件Maven IntegrationGradle Plugin由于本次实践通过 FTP 将构建文件发布到服务器,所以把 FTP 插件也下载Publish Over FTP
3. 创建 Maven 任务
Jenkins 任务的流程基本上是以下几个步骤构成:1)源码管理,2)构建触发器,3)构建环境,4)Build 前置操作,5)Build,6)Build 后置操作,7)构建后操作总结起来思路是,下载源码,执行构建,发布构建文件
一,新建 Item
按这个思路,我们在首页点击 新建Item,开始任务的创建。第一个实践任务是构建一个maven项目c740a10a035282fffccbd60c457651c3.png这里我使用 Git 来下载源码,点击添加按钮将你的 Git 账号密码写进去,这样 Jenkins 才有权限访问到仓库363abe8b20e58661ffd5f106835cc3c6.png一般我们用 ssh 方式登录到 git 服务器,所以添加的凭据类型是 SSH Username with private key留意描述Username 在图中的填写说明private key 这里将计算机上 ssh 的私钥文件里全部内容复制贴进来06cb3abdcb6c60bbc9e6ffe7c51d586f.png回到创建任务的界面,凭证选择刚刚添加的即可接下来在 Build 部分,执行 clean package 命令去构建085d0d19382e06eab33ea4824aafe451.png保存设置以后,回到上一页
二,配置编译参数
访问全局配置页面,url 相对路径是 configure将 Maven 项目配置中全局 MAVEN_OPTS 配置为,等号右边是你本地仓库的路径
-Dmaven.repo.local=C:\Users\xxx\.m2\repository
这个配置是指定 Maven 编译时的本地仓库路径,如果不指定,Jenkins 会重新下载 pom 文件中的依赖到某个路径下,适用于本地已经有依赖仓库的情况将全局属性Environment variables 打开,设置几个环境变量,这在编译时会被使用到JAVA_HOME,M2_HOME,PATH+EXTRA48ca12ca0ffadf6629e5d0b108a33c1c.png
三,配置编译工具
进入全局工具配置页面,url 相对路径是 configureTools配置 JDK,Git,Maven 的安装路径一般建议自己在本地安装好上述工具以后,在这里指定路径,而不使用自动下载的方式
4. 执行任务
回到刚刚的 Item 页,左侧列表点击 Build Now 即开始任务执行e56197ade48375a67622008787572434.png下方的构建历史会增加一行,查看控制台输出,可以浏览任务执行过程的日志信息ed342b8c74356498fd172cfb76c9974c.png到这里,有的人可能会构建失败或者出现其他问题,就会产生疑问,我写一个批处理或者 shell 脚本不也可以达到这个目的吗,而且更简单其实不然,眼光需放长远一点,Jenkins 会将每次构建进行记录,保存构建历史,便于回溯检查。而脚本执行完就结束了,后续回头查问题就别想了
5. 发布到 FTP 服务器
现在我们将构建文件发布到 FTP 上,当然,也可以发布到其他类型服务器,利用 Jenkins 的插件就可以实现进入全局配置页面,找到 Publish over FTP,添加一个 FTP 服务器地址9aac8176c9864e6731eca0fbd41e6d2c.png回到刚刚的任务页面,点击任务的配置按钮进行修改,在Post Steps 添加 Send Files over FTPfce6ea3d571e045a1204a90c8e64256e.png名词解释:Source files:需要发送到 FTP 的文件或者目录,可以填相对路径,会基于当前任务在本地创建的目录为根目录。可以用通配符指定。比如:target\* 表示将 target 目录下所有文件及子目录发送;target\build.jar 表示发送 build.jarRemove prefix:如果不指定这个参数,那么会将 target 目录在 FTP 上也创建出来,于是这里指定为 target\ ,就只会将 build.jar 发布到 FTP,而不会创建 target 目录Remote directory:要发送到 FTP 上相对根目录的路径配置好以后,重新 Build 一次,如果构建成功,在 FTP 上相应目录就可以看到构建文件被发布上来了
总结
这一次的实践,让我们了解 Jenkins 是什么,以及它的基本操作流程。实际上它的强大远不止这些,各位看官可以自行研究其玩法,后续我也会再根据实践分享它的其他构建方式
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐