利用Jenkins做Cocos2D-X项目的每日编译
目的:
- 持续集成,保证代码质量
- 自动编译和发布Android应用的测试版本
系统环境:
- Ubuntu 12.04.3 LTS
- Java/OpenJDK 1.6.0_27
- Jenkins 1.544
项目配置:
- cocos2d-x-3.0Beta
- android sdk/adt-bundle-linux-x86-20131030
- android-ndk-r9c
只要JDK没有问题,Jenkins的安装很简单,通过Jenkins官方推荐apt-get安装即可。由于我们源代码版本控制用的GitHub,需要安装对应的Jenkins插件。另外,我们还用到了TestFlight以及HipChat插件,分别用于发布测试包和消息提醒。这里记录一些重要的步骤和常见问题。
配置源代码仓库链接
我们使用了GitHub私有仓库,由于需要授权,需要给jenkins用户创建公私钥,这里可以参考GitHub的帮助,可用 sudo -iu jenkins 切换帐号操作
自定义job的空间目录
这个可以在高级设置里面修改,主要是为了cocos2d-x默认的项目配置(需要放到cocos2d-x项目二级子目录中) 定制自己的项目目录
配置Cocos2d-X的编译脚本
由于jenkins用户是一个service帐号,直接在脚本中加入需要的环境变量。为了使编译脚本能正常使用类库,先进入android项目目录再执行编译脚本
#!/bin/sh
export NDK_TOOLCHAIN_VERSION=4.8
export NDK_ROOT=/var/lib/diggerlab/android-ndk-r9c
export ANDROID_SDK_ROOT=/var/lib/diggerlab/adt-bundle-linux-x86-20131030/sdk
export COCOS2DX_ROOT=/var/lib/diggerlab/cocos2d-x-3.0beta
export PATH="${PATH}:$ANDROID_SDK_ROOT/tools:$ANDROID_SDK_ROOT/platform-tools"
cd proj.android && sh build_native.sh
调用Ant编译项目和打包Apk
ant clean debug
手动指定build文件:
proj.android/build.xml
以及参数:
sdk.dir=/mnt/diggerlab/adt-bundle-linux-x86-20131030/sdk
常见问题
- Unable to resolve project target ‘android-XX’
需要安装target的SDK平台工具,在命令行可以使用如下完成:
android update sdk --no-ui
如果不想安装所有SDK,可以加filter参数过滤,参考这个问答
- sdk.dir is missing
需要调用android工具update项目配置,获取sdk路径,也可以直接指定参数(见上述ant配置)
- NDK can’t find the application directory
Jenkins在Job的根目录运行,需先进入proj.android,然后在执行编译脚本
-
E: Sub-process /usr/bin/dpkg returned an error code (1)
cd /var/lib/dpkg sudo mv info info.bak sudo mkdir info
其他可能出现问题的地方
- 保证andoird ndk,jdk都是对应版本(64位等)
- 解决代码大小写
-
openjdk不是jdk
更新记录
- Cocos2d-X 3.0 Beta已发布,升级后自己的项目目录位置可以任意指定。(18 Jan 14@22:00 )