iOS 自动打包 从shell脚本到 jenkins的可视化操作
1. 1.png2. 2.png
3. 3.png
4. 4.png
然后我们来研究下shell脚本怎么配置
#注意路径请安格式写不要空格
#这里配置我们需要的参数
#工程名
project_name="WaWang"
#打包模式 Debug/Release
development_mode="Release"
#上传fireToken
upload_token="48093c9614dc50be05a5cb3563424d30"
#scheme名
scheme_name="WaWang"
#工程绝对路径
#project_path="/Users/msh/wawang-ios/工程/WaWang"
project_path=$(cd `dirname $0`; pwd)
#build文件夹路径
build_path="$project_path/build"
#上传哪里
upload_style=1
#这里配置我们需要的打包模式
echo "\033[36;1m请选择打包方式(输入序号,按回车即可) \033[0m"
echo "\033[33;1m1. 上传fire \033[0m"
echo "\033[33;1m2. 上传AppStore \033[0m"
# 读取用户输入并存到变量里
read parameter
sleep 0.5
method="$parameter"
# 判读用户是否有输入
if [ -n "$method" ]
then
if [ "$method" = "1" ] ; then
upload_style=1
elif [ "$method" = "2" ] ; then
upload_style=2
else
echo "输入的参数无效!!!"
exit 1
fi
fi
# AdHoc,AppStore,Enterprise三种打包方式的区别: http://blog.csdn.net/lwjok2007/article/details/46379945
echo "\033[36;1m请选择打包方式(输入序号,按回车即可) \033[0m"
echo "\033[33;1m1. AdHoc \033[0m"
echo "\033[33;1m2. AppStore \033[0m"
echo "\033[33;1m3. Development \033[0m"
# 读取用户输入并存到变量里
read parameter
sleep 0.5
method="$parameter"
# 判读用户是否有输入
if [ -n "$method" ]
then
if [ "$method" = "1" ] ; then
build_path="$project_path/build/AdHoc"
elif [ "$method" = "2" ] ; then
build_path="$project_path/build/AppStore"
elif [ "$method" = "3" ] ; then
build_path="$project_path/build/Development"
else
echo "输入的参数无效!!!"
exit 1
fi
fi
#这里是xcode的打包编译方式无需改动 如果项目时project就改动.xcworkspace和 workspace
#plist文件所在路径
exportOptionsPlistPath="$build_path/exportOptions.plist"
#导出Archive文件所在路径
appArchivePath="$build_path/$scheme_name"
appArchiveFilePath="$build_path/$scheme_name.xcarchive"
#导出.ipa文件所在路径
exportFilePath="$build_path/$scheme_name"
exportFileFilePath="$build_path/$scheme_name/$scheme_name.ipa"
echo '*** 正在 清理工程 ***'
xcodebuild clean -workspace ${project_name}.xcworkspace \
-scheme ${scheme_name} \
-configuration ${development_mode} -quiet || exit
echo '*** 清理完成 ***'
echo '*** 正在 编译工程 For '${development_mode}
xcodebuild archive -workspace ${project_name}.xcworkspace \
-scheme ${scheme_name} \
-configuration ${development_mode} \
-archivePath ${appArchiveFilePath} \
-allowProvisioningUpdates
echo '*** 编译完成 ***'
echo '*** 正在 打包 ***'
xcodebuild -exportArchive \
-archivePath ${appArchiveFilePath} \
-exportPath ${exportFilePath} \
-exportOptionsPlist ${exportOptionsPlistPath} \
-allowProvisioningUpdates
if [ -e $exportFilePath/$scheme_name.ipa ]; then
echo "*** .ipa文件已导出 ***"
open $exportFilePath
else
echo "*** 创建.ipa文件失败 ***"
fi
echo '*** 打包完成 ***'
echo '*** 上传分发平台开始 ***'
#上传分发平台
if [ $upload_style == 1 ] ; then
fir login -T $upload_token # fir.im token
fir publish $exportFileFilePath
echo "*** fir上传成功 ***"
else
echo "*** App Store上传失败 ***"
###验证并上传到App Store
### 将-u 后面的XXX替换成自己的AppleID的账号,-p后面的XXX替换成自己的密码
##altoolPath="/Applications/Xcode.app/Contents/Applications/Application Loader.app/Contents/Frameworks/ITunesSoftwareService.framework/Versions/A/Support/altool"
##"$altoolPath" --validate-app -f ${exportIpaPath}/${scheme_name}.ipa -u XXX -p XXX -t ios --output-format xml
##"$altoolPath" --upload-app -f ${exportIpaPath}/${scheme_name}.ipa -u XXX -p XXX -t ios --output-format xml
fi
echo '*** 上传分发平台完成 ***'
#
#exit 0
网友评论