iOS自动打包脚本上传至蒲公英
自动打包分为两部分
-生成archive文件
-从archive文件中导出ipa包
生成archive包
在这里就需要使用到xcodebuild命令
对于普通的project命令为:
xcodebuild archive -project project的名称.xcodeproj -scheme 应用名称 -configuration 构造配置 -archivePath 期望保存的路径
对于workspace 则命令为
xcodebuild archive -workspace workspace的名称.xcworkspace -scheme 应用名称 -configuration 构造配置 -archivePath 期望保存的路径
关于exportOptionPlist 是打包的配置信息(如是否支持bitecode,证书与描述文件…..)大概如下
在我的脚本中并没有对其进行自动生成,我的建议是手动打包一次 然后在打好的包中找到该文件保存起来 一劳永逸
导出ipa包
当archive文件生成成功后 则须从中导出ipa包
xcodebuild -exportArchive -archivePath archive文件路径 -exportPath 打包后期望保存的路径 -exportOptionsPlist 导出配置的相关信息的plist文件
上传至蒲公英
根据蒲公英文档 API2.0 命令行如下
1
| curl -F 'file=@ipa包的路径' -F '_api_key=蒲公英提供的AppKey' https://www.pgyer.com/apiv2/app/upload
|
在了解的步骤之后 只需要脚本将这些命令行组合起来 在其中插入自己需要的操作,如对测试人员的通知,当前状态的输出等等….(我没有这块的需求,就没有写了)
最后附上代码 因为代码不长 我就直接写在这里了
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
| #! /usr/bin/env python3 import os
####################### 须用户配置 ##############################
#将要上新的版本描述 updateDescription = ''
# 项目路径 projectPath = ''
# 项目名称 projectName = '
# 打包路径 IPASavePath = ''
# exportOptionPlist文件路径 exportOptionPlistPath = ''
#蒲公英App_Key pgy_appKey = ''
################################################################## #生成的Archive文件的路径 archivePath = IPASavePath + '/' +projectName + 'Archive'
#生成的ipa包的路径 IpaPath = IPASavePath + '/Apps/' + projectName + '.ipa'
# 清屏 def clearScreen(): os.system('clear') os.chdir(projectPath)
# 生成archive文件 def makeArchive(): os.system('xcodebuild archive -workspace %s.xcworkspace -scheme %s -configuration Release -archivePath %s'%(projectName,projectName,archivePath))
# 生成iPa包 def makeIpa(): os.system('xcodebuild -exportArchive -archivePath %s.xcarchive -exportPath %s -exportOptionsPlist %s'%(archivePath,IPASavePath,exportOptionPlistPath))
# 上传至蒲公英 def upLoadToPGYer():
res = (os.popen("curl -F 'file=@%s' -F '_api_key=%s' -F'updateDescription=%s' https://www.pgyer.com/apiv2/app/upload"%(IpaPath,pgy_appKey,updateDescription))).readlines()
#自动打包 def automaticPack(): clearScreen() makeArchive() makeIpa() upLoadToPGYer()
automaticPack()
|