日常开发中,我们经常会遇到为其他人员安装测试包的情况,早期的时候,都是用的最笨的方法,把每个人的手机拿过来,一个一个的为他们安装,这个过程确实即浪费时间,又浪费精力。
后来出现了一些持续继承的工具,比如jenkins,以及一些测试包分发的平台 蒲公英,fir.im,能够通过网页安装ipa包。
通过jenkins我们能够配置,一键打包,上传到上面的分发平台,并且发邮件通知人员安装。其实jenkins不过是给我们提供了一个可视化的配置界面,底层还是组合调用各种脚本命令行来完成工作的。
今天这篇文章我们就来实现通过一个脚本来完成一键打包上传蒲公英,并发送邮件提醒测试人员的整套流程
Build
打包过程使用xcodebuild
命令,支持
- debug,release环境
- workspace或普通工程打包
Build命令
1 | xcodebuild |
参数
1 | //build project |
完整用例
build Project
build 工程默认输出的build 目录是在当前文件夹的build 里面
1 | xcodebuild -project name.xcodeproj -target target1 -configuration Debug clean build |
build Workspace
需要指定CONFIGURATION_BUILD_DIR
1 | xcodebuild -workspace XXX.xcworkspace -scheme "scheme1" -configuration Debug clean build CONFIGURATION_BUILD_DIR=/Users/name/Desktop/宿舍购/project/tmp |
打包ipa
上一步将项目build成功得到了app文件,接下来需要将app文件打包成ipa。
通常ipa文件我们可以将其后缀名改为zip通过zip的方式解压,解压之后得到一个Payload文件夹,里面就是我们的app文件。
打包ipa的方式有多种,我们这里使用最简单的压缩命令。
假设我们得到的app文件为test.app,通过如下命令打包为ipa
1 | mkdir -p ipa/Payload |
上传蒲公英
上传蒲公英的过程也是非常简单,蒲公英为我们提供了现成的接口,我们只需要通过curl
命令上传即可
1 | curl -F "file=@$IPA_NAME" -F "uKey=$PUGONGYING_UKEY" -F "_api_key=$PUTONGYONG_API_KEY" http://www.pgyer.com/apiv1/app/upload |
上传成功后,蒲公英会解析包的基本信息,比如版本号,名字,包的下载地址(扫码),直接安装地址等等以json的形式返回。我们需要将这些信息解析出来。后面发邮件的时候会做为邮件内容
所以我们的命令变成了如下
1 | UPLOAD_CMD='curl -F "file=@$IPA_NAME" -F "uKey=$PUGONGYING_UKEY" -F "_api_key=$PUTONGYONG_API_KEY" http://www.pgyer.com/apiv1/app/upload' |
这样上传的结果就保存到了UPLOAD_RESULT
变量中了
解析json获取属性
由于本人对shell并不熟悉,这里解析json获取属性用了非常简单粗暴的方式,即通过字符串匹配,截取,得到某个key对应的属性,如果有高手,希望能告知,shell语言如何正确的解析json
1 | appKey=`echo $UPLOAD_RESULT | grep -o '"appKey":"[0-9a-zA-Z]\{4,\}"' | tr '\"' ' ' | sed 's/[ ]//g' | sed 's/appKey://'` |
由于后面发送邮件使用python脚本,与shell不在一个上下文环境,所以这里的变量需要导出才能在python里面获取到
1 | export appName |
python发送邮件
首先在shell命令行调用python脚本
1 | pythonPath=$CURRENT_PATH"/sendMail.py" |
python脚本
1 | # coding=utf-8 |