手把手教你利用Jenkins持续集成WEB项目

发表于:2017-12-25 07:49

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:一缕殇流化隐半边冰霜    来源:51Testing软件测试网采编

分享:
  前言
  众所周知,现在App的竞争已经到了用户体验为王,质量为上的白热化阶段。用户们都是很挑剔的。如果一个公司的推广团队好不容易砸了重金推广了一个APP,好不容易有了一些用户,由于一次线上的bug导致一批的用户在使用中纷纷出现闪退bug,轻则,很可能前期推广砸的钱都白费了,重则,口碑不好,未来也提升不起用户量来了。静下心来分析一下问题的原因,无外乎就是质量没有过关就上线了。除去主观的一些因素,很大部分的客观因素我觉得可以被我们防范的。根据大神们提出的一套开发规范建议,CI + FDD,就可以帮助我们极大程度的解决客观因素。本文接下来主要讨论 Continuous Integration 持续集成(简称CI)
  目录
  1.为什么我们需要持续集成
  2.持续化集成工具——Jenkins
  3.iOS自动化打包命令——xcodebuild + xcrun 和 fastlane - gym 命令
  4.打包完成自动化上传 fir / 蒲公英 第三方平台
  5.完整的持续集成流程
  6.Jenkins + Docker
  一. 为什么我们需要持续集成
  谈到为什么需要的问题,我们就需要从什么是来说起。那什么是持续集成呢。
  持续集成是一种软件开发实践:许多团队频繁地集成他们的工作,每位成员通常进行日常集成,进而每天会有多种集成。每个集成会由自动的构建(包括测试)来尽可能快地检测错误。许多团队发现这种方法可以显著的减少集成问题并且可以使团队开发更加快捷。
  CI是一种开发实践。实践应该包含3个基本模块,一个可以自动构建的过程,自动编译代码,可以自动分发,部署和测试。一个代码仓库,SVN或者Git。最后一个是一个持续集成的服务器。通过持续集成,可以让我们通过自动化等手段高频率地去获取产品反馈并响应反馈的过程。
  那么持续集成能给我们带来些什么好处呢?这里推荐一篇文章,文章中把Continuous integration (CI) and test-driven development (TDD)分成了12个步骤。然而带来的好处成倍增加,有24点好处。
  我来说说用了CI以后带来的一些深有体会的优点。
  1. 缩减开发周期,快速迭代版本
  每个版本开始都会估算好开发周期,但是总会因为各种事情而延期。这其中包括了一些客观因素。由于产品线增多,迭代速度越来越快,给测试带来的压力也越来越大。如果测试都在开发完全开发完成之后再来测试,那就会影响很长一段时间。这时候由于集成晚就会严重拖慢项目节奏。如果能尽早的持续集成,尽快进入上图的12步骤的迭代环中,就可以尽早的暴露出问题,提早解决,尽量在规定时间内完成任务。
  2. 自动化流水线操作带来的高效
  其实打包对于开发人员来说是一件很耗时,而且没有很大技术含量的工作。如果开发人员一多,相互改的代码冲突的几率就越大,加上没有产线管理机制,代码仓库的代码质量很难保证。团队里面会花一些时间来解决冲突,解决完了冲突还需要自己手动打包。这个时候如果证书又不对,又要耽误好长时间。这些时间其实可以用持续集成来节约起来的。一天两天看着不多,但是按照年的单位来计算,可以节约很多时间!
  3. 随时可部署
  有了持续集成以后,我们可以以天为单位来打包,这种高频率的集成带来的最大的优点就是可以随时部署上线。这样就不会导致快要上线,到处是漏洞,到处是bug,手忙脚乱弄完以后还不能部署,严重影响上线时间。
  4. 极大程度避免低级错误
  我们可以犯错误,但是犯低级错误就很不应该。这里指的低级错误包括以下几点:编译错误,安装问题,接口问题,性能问题。
  以天为单位的持续集成,可以很快发现编译问题,自动打包直接无法通过。打完包以后,测试扫码无法安装,这种问题也会立即被暴露出来。接口问题和性能问题就有自动化测试脚本来发现。这些低级问题由持续集成来暴露展现出来,提醒我们避免低级错误。
  二. 持续化集成工具——Jenkins
  Jenkins 是一个开源项目,提供了一种易于使用的持续集成系统,使开发者从繁杂的集成中解脱出来,专注于更为重要的业务逻辑实现上。同时 Jenkins 能实施监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的形式形象地展示项目构建的趋势和稳定性。
  根据官方定义,Jenkins有以下的用途:
  构建项目
  跑测试用例检测bug
  静态代码检测
  部署
  关于这4点,实际使用中还是比较方便的:
  1.构建项目自动化打包可以省去开发人员好多时间,重要的是,Jenkins为我们维护了一套高质量可用的代码,而且保证了一个纯净的环境。我们经常会出现由于本地配置出错而导致打包失败的情况。现在Jenkins就是一个公平的评判者,它无法正确的编译出ipa,那就是有编译错误或者配置问题。开发人员没必要去争论本地是可以运行的,拉取了谁谁谁的代码以后就不能运行了。共同维护Jenkins的正常编译,因为Jenkins的编译环境比我们本地简单的多,它是最纯净无污染的编译环境。开发者就只用专注于编码。这是给开发者带来的便利。
  2.这个可以用来自动化测试。在本地生成大批的测试用例。每天利用服务器不断的跑这些用例。每天每个接口都跑一遍。看上去没必要,但是实际上今天运行正常的系统,很可能由于今天的代码改动,明天就出现问题了。有了Jenkins可以以天为单位的进行回归测试,代码只要有改动,Jenkins就把所有的回归测试的用例全部都跑一遍。在项目工期紧张的情况下,很多情况测试都不是很重视回归测试,毕竟很可能测一遍之后是徒劳的“无用功”。然而由于回归测试不及时,就导致到最后发版的时候系统不可用了,这时候回头查找原因是比较耗时的,查看提交记录,看到上百条提交记录,排查起来也是头疼的事情。以天为单位的回归测试能立即发现问题。测试人员每天可以专注按单元测试,一周手动一次回归测试。这是给测试者带来的便利。
  3.这个是静态代码分析,可以检测出很多代码的问题,比如潜在的内存泄露的问题。由于Jenkins所在环境的纯净,还是可以发现一些我们本地复杂环境无法发现的问题,进一步的提高代码质量。这是给质检带来的便利。
  4.随时部署。Jenkins在打包完成之后可以设定之后的操作,这个时候往往就是提交app到跑测试用例的系统,或者部署到内测平台生成二维码。部署中不能安装等一些低级问题随之立即暴露。测试人员也只需要扫一下二维码即可安装,很方便。这也算是给测试带来的便利。
  以下的例子以2016-07-24 22:35的Weekly Release 2.15的版本为例。
  我们来开始安装Jenkins。从官网https://jenkins.io/ 上下载最新的pkg安装包。





  也可以下载jenkins.war, 然后运行Java -jar jenkins.war,进行安装。
  安装完成之后,Safari可能会自动打开,如果没有自动打开,打开浏览器,输入http://localhost:8080
  这个时候可能会报一个错误。如果出现了这面的问题。出现这个问题的原因就是Java环境有问题,重新Java环境即可。
  这个时候如果你重启电脑会发现Jenkins给你新增了一个用户,名字就叫Jenkins,不过这个时候你不知道密码。你可能会去试密码,肯定是是不对的,因为初始密码很复杂。这个时候正确做法是打开http://localhost:8080 会出现下图的重设初始密码的界面。
  按照提示,找到/Users/Shared/Jenkins/Home/ 这个目录下,这个目录虽然是共享目录,但是有权限的,非Jenkins用户/secrets/目录是没有读写权限的。



上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
31/3123>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号