iOS配置shell脚本自动打包上传到蒲公英

来源:互联网 发布:阿里云如何关闭网站 编辑:程序博客网 时间:2024/04/29 19:16


转载请注明出处:
http://blog.csdn.net/bluewindaa/article/details/73650089


前言

在Mac上配置使用脚本进行自动打包,网上搜了好多文章,自己又琢磨了一段时间,总算捣鼓好了,现在写出来总结一下。


准备工作

1.从仓库拉取代码到本地,假设文件夹名为Test (下文提到的文件夹都指该目录)

2.将打包使用到的脚本test.sh文件放入到文件夹中

3.如果是8.3以后的XCode,需从旧的Xcodecopy一份打包时要用到的PackageApplication放到如下目录中:

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/

注:不添加会打包失败,提示

xcrun: error: unable to find utility "PackageApplication", not a developer tool or in PATH

4.然后执行命令

sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer/
chmod +x /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/PackageApplication




PackageApplication下载地址:

链接: https://pan.baidu.com/s/1nuCSmpz 密码: 4gkq


开始

脚本一共分为如下几部分:路径、证书配置;拉取最新代码;打包;导出ipa;上传蒲公英;发送邮件


1.路径、证书配置

echo "\n**********************************************\n"echo "schemes: Test0 Test1 "echo "configuration: Debug Release"echo "\n**********************************************\n"SCHEMENAME=$1CONFIGURATION=$2BRANCHNAME=developDATE=`date +%Y%m%d_%H%M`HOMEPATH=/Users/Cecilia/DesktopSOURCEPATH=/Users/Cecilia/Desktop/DoubleTeacherModeIPAPATH=$HOMEPATH/iOS打包/$BRANCHNAME/$DATEIPANAME=$SCHEMENAME.ipaTest0AdHocProvisioningProfile="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"Test0ReleaseProvisioningProfile="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"Test0DebugProvisioningProfile="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"Test1AdHocProvisioningProfile="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"Test1ReleaseProvisioningProfile="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"Test1DebugProvisioningProfile="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"Test0ReleaseCodeSignIdentity="iPhone Distribution: xxxxxxxxxxx network technology co., LTD (xxxxxxxxxx)"Test0DebugCodeSignIdentity="iPhone Developer: xxx (xxxxxxxxxx)"Test1ReleaseCodeSignIdentity="iPhone Distribution: xxxxxxxxxx technology co., LTD (xxxxxxxxxx)"Test1DebugCodeSignIdentity="iPhone Developer: xxx (xxxxxxxxxx)"if [[ $SCHEMENAME == "Test0" && $CONFIGURATION == "Release" ]]; thenCODE_SIGN_IDENTITY="$doubleTeacherReleaseCodeSignIdentity"PROVISIONING_PROFILE="$doubleTeacherAdHocProvisioningProfile"elif [[ $SCHEMENAME = "Test0" && $CONFIGURATION = "Debug" ]]; then    CODE_SIGN_IDENTITY="$doubleTeacherDebugCodeSignIdentity"    PROVISIONING_PROFILE="$doubleTeacherDebugProvisioningProfile"elif [[ $SCHEMENAME = "Test1" && $CONFIGURATION = "Release" ]]; then    CODE_SIGN_IDENTITY="$qiFengReleaseCodeSignIdentity"    PROVISIONING_PROFILE="$qiFengAdHocProvisioningProfile"elif [[ $SCHEMENAME = "Test1" && $CONFIGURATION = "Debug" ]]; then    CODE_SIGN_IDENTITY="$qiFengDebugCodeSignIdentity"    PROVISIONING_PROFILE="$qiFengDebugProvisioningProfile"fi


2.拉取最新代码

echo "请输入远程电脑密码(输入密码后,按回车即可)"read macPassword# git updategit checkout $BRANCHNAMEif [ $? -ne 0 ]; then    exit 1figit pull#pod update --verbose --no-repo-updateif [ $? -ne 0 ]; then     exit 1fi# delete trash filesif [ -e $IPAPATH/* ]; then     mv $IPAPATH/* ~/.Trash     if [ $? -ne 0 ]; then          echo "error:Delete trash files failed!"      exit 1    fifi


3.打包

xcodebuild \-workspace $SOURCEPATH/Test0.xcworkspace \-scheme $SCHEMENAME \-configuration $CONFIGURATION \CODE_SIGN_IDENTITY="$CODE_SIGN_IDENTITY" \PROVISIONING_PROFILE="$PROVISIONING_PROFILE" \clean \build \-derivedDataPath $IPAPATH


4.导出ipa

xcrun -sdk iphoneos PackageApplication \-v $IPAPATH/Build/Products/$CONFIGURATION-iphoneos/$SCHEMENAME.app \-o $IPAPATH/$IPANAME


5.上传蒲公英,uKey和_api_key需到蒲公英官网上获取

curl -F "file=@$IPAPATH/$IPANAME" \-F "uKey=6a988d155c4870d89f23ab16ada511c6" \-F "_api_key=41b7a601a124634f7accd9454a1914d5" \https://qiniu-storage.pgyer.com/apiv1/app/upload


6.发送邮件

cd  $IPAPATHzipName="tempZipName.zip"zip -r $zipName $IPAPATH/$IPANAMEexport LANG=C.UTF-8#$echo <123> | sudo -S <command># 修改大文件限制echo $macPassword | sudo -S postconf -e message_size_limit=0postconf -d | grep size# echo message_size_limit# 压缩包路径zipPath=$IPAPATH/$zipNameecho $macPassword | sudo -S postconf -e message_size_limit=0postconf -d | grep sizeemailTitle="有新包啦"emailBody="新包已经上传\n 请移步https://www.pgyer.com/xxxx 进行安装"( echo $emailBody; uuencode $zipPath ipa.zip) | mail -s $emailTitle cecilia_900@163.comecho "\033[36;1m发送邮件成功 \033[0m"


附上完整的脚本文件

#!/bin/bash# author Ceciliaecho "\n**********************************************\n"echo "schemes:  Test0   Test1 "echo "configuration: Debug  Release"echo "\n**********************************************\n"SCHEMENAME=$1CONFIGURATION=$2BRANCHNAME=developDATE=`date +%Y%m%d_%H%M`HOMEPATH=/Users/Cecilia/DesktopSOURCEPATH=/Users/Cecilia/Desktop/Test0IPAPATH=$HOMEPATH/iOS打包/$BRANCHNAME/$DATEIPANAME=$SCHEMENAME.ipaTest0AdHocProvisioningProfile="xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx"Test0ReleaseProvisioningProfile="xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx"Test0DebugProvisioningProfile="xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx"qiFengAdHocProvisioningProfile="xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx"qiFengReleaseProvisioningProfile="xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx"qiFengDebugProvisioningProfile="xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx"Test0ReleaseCodeSignIdentity="iPhone Distribution: xxxxxxxxxx network technology co., LTD (xxxxxxxxxx)"Test0DebugCodeSignIdentity="iPhone Developer: xxx (xxxxxxxxxx)"qiFengReleaseCodeSignIdentity="iPhone Distribution: xxxxxxxxxx network technology co., LTD (xxxxxxxxxx)"qiFengDebugCodeSignIdentity="iPhone Developer: xxx (xxxxxxxxxx)"if [[ $SCHEMENAME == "Test0" && $CONFIGURATION == "Release" ]]; then    CODE_SIGN_IDENTITY="$Test0ReleaseCodeSignIdentity"    PROVISIONING_PROFILE="$Test0AdHocProvisioningProfile"elif [[ $SCHEMENAME = "Test0" && $CONFIGURATION = "Debug" ]]; then    CODE_SIGN_IDENTITY="$Test0DebugCodeSignIdentity"    PROVISIONING_PROFILE="$Test0DebugProvisioningProfile"elif [[ $SCHEMENAME = "Test1" && $CONFIGURATION = "Release" ]]; then    CODE_SIGN_IDENTITY="$qiFengReleaseCodeSignIdentity"    PROVISIONING_PROFILE="$qiFengAdHocProvisioningProfile"elif [[ $SCHEMENAME = "Test1" && $CONFIGURATION = "Debug" ]]; then    CODE_SIGN_IDENTITY="$qiFengDebugCodeSignIdentity"    PROVISIONING_PROFILE="$qiFengDebugProvisioningProfile"fiecho "请输入远程电脑密码(输入密码后,按回车即可)"read macPassword# git updategit checkout $BRANCHNAMEif [ $? -ne 0 ]; then    exit 1figit pull#pod update --verbose --no-repo-updateif [ $? -ne 0 ]; then    exit 1fi# delete trash filesif [ -e $IPAPATH/* ]; then    mv $IPAPATH/* ~/.Trash    if [ $? -ne 0 ]; then        echo "error:Delete trash files failed!"    exit 1    fifi#build Test0xcodebuild \-workspace $SOURCEPATH/Test0.xcworkspace \-scheme $SCHEMENAME \-configuration $CONFIGURATION \CODE_SIGN_IDENTITY="$CODE_SIGN_IDENTITY" \PROVISIONING_PROFILE="$PROVISIONING_PROFILE" \clean \build \-derivedDataPath $IPAPATHif [ -e $IPAPATH ]; thenecho "xcodebuild Successful"elseecho "xcodebuild failed"exit 1fi#xcrun .ipaxcrun -sdk iphoneos PackageApplication \-v $IPAPATH/Build/Products/$CONFIGURATION-iphoneos/$SCHEMENAME.app \-o $IPAPATH/$IPANAMEif [ -e $IPAPATH/$IPANAME ]; thenecho "\n-------------------\n\n\n"echo "Configurations! Build Successful"echo "\n\n\n-------------\n\n"echo "Current Branch log:"git log -2open $IPAPATHelseecho "\n-------------------\n"echo "error:Create IPA failed"echo "Please check the cause of failure and contact developers"echo "\n-------------------\n"ficurl -F "file=@$IPAPATH/$IPANAME" \-F "uKey=6a988d155c4870d89f23ab16ada511c6" \-F "_api_key=41b7a601a124634f7accd9454a1914d5" \https://qiniu-storage.pgyer.com/apiv1/app/uploadcho "\n\n\n\n-------------------\n\n\n\n"echo "\033[36;1m打包总用时: ${SECONDS}s \033[0m"cd  $IPAPATHzipName="tempZipName.zip"zip -r $zipName $IPAPATH/$IPANAMEexport LANG=C.UTF-8#$echo <123> | sudo -S <command># 修改大文件限制echo $macPassword | sudo -S postconf -e message_size_limit=0postconf -d | grep size# echo message_size_limit# 压缩包路径zipPath=$IPAPATH/$zipNameecho $macPassword | sudo -S postconf -e message_size_limit=0postconf -d | grep sizeemailTitle="有新包啦"emailBody="新包已经上传\n 请移步https://www.pgyer.com/xxxx 进行安装"( echo $emailBody; uuencode $zipPath ipa.zip) | mail -s $emailTitle cecilia_900@163.comecho "\033[36;1m发送邮件成功 \033[0m"

如果使用过程中有什么问题,欢迎留言。转载请注明出处,谢谢

 
阅读全文
0 0