文档章节

手游项目使用Jenkins搭建持续集成系统

qujin_liang
 qujin_liang
发布于 2016/10/20 15:20
字数 1310
阅读 108
收藏 1

正忙于工作,却被打断要给市场部门打个包?

测试部门要求每天有新的版本,可以验证bug?

策划要求每天有新的版本,可以跟进审查?

每次集成版本,总担心合并带来问题,要把主要模块手动跑个遍?

如果你遇到这些情况,还不得不手动打包,人工测试,那这篇文章正适合你。

 

持续集成(continue intergration,简称CI)系统,就是一个可以定时从源代码管理系统下载代码,调用编译器编译链接,调用测试工具测试,部署产物,并通知相关人员的自动化系统。

它的本质只是一个定时器,时机一到,就调用设置好的动作。

它需要跟其他各种系统打交道(代码管理、编译、测试等),是一个调度者。

它的实现可以很简单,比如使用windows的任务计划工具、unix的cron这些定时服务,定期调用一些脚本即可。

更方便的做法,是直接使用一些持续集成工具,简化脚本的编写。使用者往往只需要填写一下集成的周期,项目的SVN地址,项目工程文件的路径,测试文件的路径,产物的路径,通知者的email地址等,就可以让一套系统建立起来。

比较常用的持续集成工具,有Jenkins、Hudson、TeamCity等。

这里介绍下使用Jenkins,对一个cocos2dx手机网游的持续集成实践。

 

项目目前支持3个平台,windows、AndroidiOS,希望可以每日构建出这三个平台的版本。策划、测试人员也可以按需要随时构建版本

版本采用网页下载的形式提供给项目组成员

项目构建成功时,发送邮件给策划、测试;构建失败时,发送邮件给开发

版本构建成功并不只是编译通过,还希望跑一些集成测试,自动测试通过后,才认为版本构建成功

 

1.持续集成CI服务器的安装

Jenkins在各系统下的安装配置,网上的资料很多,这里就不再赘述了

因为要构建windows和iOS版本,因此在一台windows笔记本和一台mac air上各自安装了对应的Jenkins版本

 

2.Windows版本的构建

安装msbuild插件,使用这个插件,只要填入项目sln文件路径即可完成windows版本的编译工作

 

3.构建产物发布与邮件通知

目前我们使用批处理脚本,将exe和资源打包成zip文件的方式生成windows版产物

使用Jenkins的artifacts功能,在网页上提供产物的链接

使用Jenkins的Email Notification功能,当构建不成功时,发送邮件给开发人员

使用Email-Ext插件,当构建成功时,发送邮件给产品人员

 

4.android版本的构建

首先使用ant,完成apk的批处理生成、打包功能(网上资料很多)

在Jenkins里使用批处理脚本,构建并发布android版本产物

 

5.ios版本的构建

在mac上的jenkins安装xcode插件,类似msbuild插件,原则上填入项目文件路径即可完成编译链接工作,但因为需要使用keychain签名,遇到了一些麻烦。

mac上的jenkins,会在os x上新建一个jenkins用户,并使用这个用户的keychain进行签名

目前采取的方式,从之前成功签名的用户keychain里,导出证书、私钥对给jenkins用户的keychain;将可用账户的provision profile拷贝到jenkins用户的Library/MobileDevice目录下。做完这些,就签名成功了。

目前使用两个jenkins主机,提供多个版本的构建。其实jenkins提供master/slave模式,只需要在master上安装jenkins,并添加slave节点,即可以进行分布式编译。

 

6.游戏的自动化测试

使用CI,自动构建部署只是第一步;在构建过程中,运用自动化的手段,对产物进行测试,对代码进行检查,才能最大化的发挥持续构建的威力。

项目主要使用lua开发,选择了luaunit作为测试框架,输出xml测试报告。在jenkins中指定测试报告的目录路径,就可以自动在测试失败时通知开发人员了。

目前的手游项目,只编写了一些简单的集成测试脚本。在脚本中对游戏的主要界面进行跳转,并在脚本中检查跳转是否成功;在脚本中调用一些功能函数,检查执行过程中是否产生异常。

这种测试方式,要求使用构建好的客户端产物作为测试主体,使用特殊的测试方式跑游戏。

 

7.总结

使用Jenkins搭建一个CI系统并不是一件很困难的事情,相比它带来的好处,很值得进行尝试。手游项目使用Jenkins搭建持续集成系统

本文转载自:http://blog.csdn.net/wtyqm/article/details/21614839

qujin_liang
粉丝 2
博文 23
码字总数 7633
作品 0
朝阳
私信 提问
使用 Jenkins 构建 Coding 项目 (资源)

Jenkins简介 Jenkins是一种跨平台的持续集成和交付的应用软件,它便于不断稳定地交付新的软件版本,并提高你的工作效率。这款开发运维工具还让开发人员更容易把项目的变化整合起来,并使用大...

寰宇01
2018/04/23
547
0
持续集成Jenkins环境配置+使用

什么是持续集成? 持续集成的定义:集成软件的过程不是新问题,如果项目开发的规模比较小,比如一个人的项目,如果它对外部系统的依赖很小,那么软件集成不是问题,但是随着软件项目复杂度的...

ala9981
2016/04/12
0
0
基于 Jenkins 快速搭建持续集成环境

简介: 持续集成是一种软件开发实践,对于提高软件开发效率并保障软件开发质量提供了理论基础。Jenkins 是一个开源软件项目,旨在提供一个开放易用的软件平台,使持续集成变成可能。本文正是...

IBMdW
2011/11/24
21.5K
8
基于Jenkins 快速搭建持续集成环境

持续集成概述 什么是持续集成 随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题。尤其是近些年来,敏捷(Agile)...

openthings
2015/12/09
434
0
使用Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境(二)

前言 上一篇随笔Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境(一)介绍maven和nexus的环境搭建,以及如何使用maven和nexus统一管理库文件和版本,以及怎么将自己的模块上传至nex...

凯文加内特
2015/11/05
638
0

没有更多内容

加载失败,请刷新页面

加载更多

nginx访问日志/日志切割/静态文件过期时间/防盗链

Nginx访问日志主要记录部署在nginx上的网站访问数据,日志格式定义在nginx主配置文件中。 nginx主配置文件:/etc/nginx/nginx.conf 查看nginx主配置文件: ```markup [root@linux ~]# cat /e...

asnfuy
7分钟前
4
0
JS_高程4.变量,作用域和内存问题(2)执行环境及作用域

本文转载于:专业的前端网站➨JS_高程4.变量,作用域和内存问题(2)执行环境及作用域 1.执行环境:执行环境定义了变量或函数有权访问的其他数据,决定了它们各自的行为,       每个执...

前端老手
11分钟前
3
0
手机迅雷下载的文件,电脑上找不到问题

不知道手机迅雷怎么做到的,手机迅雷下载的文件,手机上可以看的到 但连电脑后, 电脑上看不到文件 . 尝试了打开查看隐藏文件, 但没有效果 . 手机上查询文件权限 也是对的 . 可读,可写, 不隐藏 ...

ol_O_O_lo
13分钟前
3
0
python学习11:Python tuple元组详解

元组是 Python 中另一个重要的序列结构,和列表类似,也是由一系列按特定顺序排序的元素组成。和列表不同的是,列表可以任意操作元素,是可变序列;而元组是不可变序列,即元组中的元素不可以...

太空堡垒185
25分钟前
3
0
Java实现数据结构之线性结构

一、顺序表 顺序表本质是使用数组储存数组的一种数据结构,在计算机的储存中是连续的分配内存的。 下面是我自己使用java实现的简单顺序表结构 package list; public class MyArrayList<E> { ...

daxiongdi
28分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部