在项目中,依赖开发手动打包效率低且版本控制不稳定。 测试人员需要掌握独立环境部署能力才是正途。
一、选择Mac系统的原因
因为要打包IOS的APP, IOS的编译环境是Xcode,这个需要安装在Mac系统上。 所以如果要编译IOS并打包,则要使用Mac系统。
二、Jenkins分布式构建
1、在使用jenkins自动构建时,我们可能包含服务端、前端、客户端APP(安卓和IOS)等编译构建。 服务端语言又分为java、.net、.net core 、C++等,每种编程语言的编译环境及方法均不一样。
如果在一个服务器上搭建环境,就会很杂乱。需要编译构建的程序多了,构建服务器本身的资源使用也会成为瓶颈。 所以后期发展成熟,建议使用分布式构建。 jenkins支持Master/Slave的主从架构来实现。
2、主从架构
1、jenkins服务器为主节点,处理调度构建作业。
2、主机进行构建任务分发,从机来具体执行
3、监视从机节点,记录从机的构建结果
主从最终实现的效果图: (本期主要讲述APP打包,主从架构概过,感兴趣的同学可以自行百度实践)
三、APP打包环境准备
1、jenkins环境 (有文件安装和命令行安装,推荐使用命令行安装)
a、安装jenkins前需要安装jdk,版本1.8以上
b、文件安装:官网下载 https://jenkins.io/zh/download/ (根据搭建服务器环境*选择,本次我们需要构建IOS的IPA包,选择 Mac os)
命令安装:
1、先需要安装软件包home brew,直接在终端对话框中敲 /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
2、查看brew是否安装成功: brew -v
能显示版本号即安装成功
3、直接命令行安装jenkins : brew install jenkins (因为我已安装,所以显示此提示)
c、在浏览器中输入http://localhost:8080,首次安装应该会出现如下界面,这里需要你去找到Jenkins的初始密码。 密码在如下的 红色提示路径下
d、后续都采用默认安装,即可完成安装
2、xcode下载安装 (xcode可以直接在appstore中下载及安装,此文件有点大 有接近10g)
3、安卓打包工具 android-sdk安装:
a、Android-sdk 资源站点 http://www.androiddevtools.cn ,一直下一步安装
b、android-sdk安装完成后,找到android-sdk/tools 安装路径,双击 android程序,唤出SDK Manager
c、更新sdk组件 (由于谷歌被墙了,所以某些sdk无法更新,需要设置国内镜像站点)
Mac顶部菜单点击Android SDK Manager -> Preferences
HTTP Proxy Server填写:mirrors.neusoft.edu.cn
HTTP Proxy Port填写:80
勾选Force https:// ,然后点击“Close”
Mac顶部菜单点击Tools -> Manage Add-on Site,选择右侧“User Defined Sites”:
把下面这堆网址:
http://mirrors.neusoft.edu.cn/android/repository/addon-6.xml
http://mirrors.neusoft.edu.cn/android/repository/addon.xml
http://mirrors.neusoft.edu.cn/android/repository/extras/intel/addon.xml
http://mirrors.neusoft.edu.cn/android/repository/sys-img/android-tv/sys-img.xml
http://mirrors.neusoft.edu.cn/android/repository/sys-img/android-wear/sys-img.xml
http://mirrors.neusoft.edu.cn/android/repository/sys-img/android/sys-img.xml
http://mirrors.neusoft.edu.cn/android/repository/sys-img/google_apis/sys-img.xml
http://mirrors.neusoft.edu.cn/android/repository/sys-img/x86/addon-x86.xml
http://mirrors.neusoft.edu.cn/android/repository/addons_list-2.xml
http://mirrors.neusoft.edu.cn/android/repository/repository-10.xml
全手动New加进去,然后就可以下载了,点击
四、jenkins中环境变量配置
1、Android环境变量配置 ,在 系统管理-系统设置中添加 Android_Home
2、gradle配置
在 系统管理-全局工具配置中 添加一个gradle版本。 我们编译使用的V4.6
五、Android打包工程配置
1、创建一个*风格的工程
2、旧的构建数据丢弃
3、源码拉取,可以选择svn或者git,看项目使用的配置管理工具
4、设置构建触发策略,我这里选择的定时触发(6点和12点自动构建打包)
5、编译构建并将编译的包放到共享目录
1、测试环境或线上环境的编译任务assembleBetaDebug,可以咨询安卓开发。(如果开发没有设置打包渠道,可以手动在代码路径 app/build.gradle下加入此代码)
2、添加一个Execute shell,将生成的apk包转移到共享目录下。 (大多人使用的windows的办公电脑,取包不方便,放到共享目录后 取包很方便了)
cp ./app/build/outputs/apk/beta/debug/app-beta-debug.apk /Users/mjb/Desktop/CI/android_new_trunk.apk
mv ./app/build/outputs/apk/beta/debug/app-beta-debug.apk /Users/mjb/Desktop/CI/android/trunk/xxx-${BUILD_ID}.apk
放到共享目录后,取包方便很多 、 另外也可以考虑将包放到蒲公英平台或者生成固定二维码,直接下载。
六、IOS打包工程配置
1、前面配置省略,跟安卓类似
2、使用shell脚本编译 (jenkins对于xcode插件兼容性不好,所以建议调用shell执行xcodebuild脚本来编译)
第一个的shell是编译xcodebuild,第二个shell是变换共享目录
#!/usr/bin/env bash #xcodebuild clean -workspace /Users/mjb/.jenkins/workspace/mjd-app-ios/Sales.xcworkspace -sdk iphoneos -scheme "Sales" -configuration "Debug" archive #Release xcodebuild -archivePath "/Users/mjb/.jenkins/workspace/mjd-app-ios/build/Sales.xcarchive" -workspace /Users/mjb/.jenkins/workspace/mjd-app-ios/Sales.xcworkspace -sdk iphoneos -scheme "Sales" -configuration "Debug" archive xcodebuild -exportArchive -archivePath "/Users/mjb/.jenkins/workspace/mjd-app-ios/build/Sales.xcarchive" -exportPath "/Users/mjb/.jenkins/workspace/mjd-app-ios/build/Sales_debug" -exportOptionsPlist \'/Users/mjb/.jenkins/workspace/mjd-app-ios/build/ExportOptions.plist\' -allowProvisioningUpdates
注意,在编译前需要将这两个文件复制到对应目录
最后实施完成的效果 :
安卓和IOS都能成功打包 apk和ipa了